gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 20:22:09 24 4
gpt4 key购买 nike

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

<!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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com