javascript - JavaScript 和 AngularJS 中的正则表达式与 ng-change 不匹配

标签 javascript regex angularjs angularjs-ng-change

我试图获取此页面中的路径变量,以在用户输入时更改空格和标点符号字符。以下是相应的代码:

<!doctype html>
<html lang="en-US" ng-app>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width">
    <title>ng-change</title>
    <link rel="stylesheet" type="text/css" href="mystyle.css" media="all"/>
    <script type="text/javascript" src="angular_1.0.7.js"></script>
</head>
    <body>
        <div class="browser" ng-controller="Browser">

            <!--Mock browser URL-->
            <div class="url">
                &larr; &rarr; &infin;
                <input type="text" value="edit/{{ path }}"/>
            </div>

            <!--Input field for the page, mock page-->
            <div class="page">
                <label for="update">
                    Update the URL:
                    <input ng-change="clean()" ng-model="path"/>
                </label>
            </div>

        </div>
        <script type="text/javascript" src="script.js"></script>
    </body>
</html>

但是,当我输入任何内容时,什么也没有发生。这是 script.js 文件:

var Browser = function ($scope) {
    $scope.clean = function () {

        $scope.path = $scope.path
                        .replace("/\s+/g", "-")
                        .replace("/[^a-z0-9-]/i", "");
        console.log($scope.path);
    };
};

我很确定我的 javaScript 是正确的,但我不知道为什么我的应用程序无法正常工作,我尝试调试它,问题似乎是 ng-change仅当放入空格以外的字符时才认为是更改,每当放入空格时,都会忽略它们。

最佳答案

您的“正则表达式”是字符串,而不是正则表达式对象。创建正则表达式对象的两种方法是:

new RegExp("regex string", "flags")
// and
/regex stuff/flags

从代码中删除引号.replace("/\s+/g", "-"),使其变为.replace(/\s+/g, "-") .

.replace() 方法确实接受一个字符串(以及正则表达式),但尝试查找该确切文本的第一次出现,而不是使用字符串中的正则表达式。

引用文献:

关于javascript - JavaScript 和 AngularJS 中的正则表达式与 ng-change 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18085920/

相关文章:

javascript - 在 React 中将值从一个父组件传递到另一个

python - 特定模式的正则表达式

python - 得到错误的结果 NLTK 和 REGEX

angularjs - 您似乎没有安装名为 Angular 的生成器。?

javascript - 如何从 ng-repeat 中保存元素?

javascript - JQuery 可调整大小的触摸屏

javascript - 在指定的BPM中录制音频

javascript - 在下拉列表中选择相同的值时触发事件?

c# - 按数字和符号拆分字符串 c#

javascript - 让 Moment JS 显示到昨天为止的时间,然后开始显示格式化的日期