我将输入文本验证为a-z或A-Z或\s
即空格。
$scope.change= function(){
var regex = /(?:[a-zA-Z|\s]+)/;
var match = regex.exec($scope.userInputName);
以上代码有效,match
仅捕获字母或空格。
但是,当我提出以下声明时
$scope.userInputName = match;
$scope.userInputNam
变量仅等于任何空格之前的字符串。因此,如果match
持有abc d
$scope.userInputName
只会等同于abc
我正在使用Angular来调用名称
答案 0 :(得分:2)
match
将返回一个数组,而不是字符串(如果字符串不匹配,则返回null
。)
如果你想要匹配的内容,那些就在数组的第一个条目中:
if (match) {
$scope.userInputName = match[0];
}
the specification和MDN上的更多内容。
答案 1 :(得分:1)
我正在验证输入文字为a-z或A-Z或\ s,即空格。
在这种情况下你的正则表达式是错误的:
var regex = /!(?:[a-zA-Z|\s]+)/;
应该是:
var regex = /(?:[a-zA-Z\s]+)/;
Pipe
被视为字符类中的文字管道字符,并且在正则表达式前面有不需要的!
。