var X = Y仅在空格之前传输字符串。 Y = regex.exec(string);

时间:2013-08-31 13:17:11

标签: javascript regex angularjs

我将输入文本验证为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来调用名称

2 个答案:

答案 0 :(得分:2)

match将返回一个数组,而不是字符串(如果字符串不匹配,则返回null。)

如果你想要匹配的内容,那些就在数组的第一个条目中:

if (match) {
    $scope.userInputName = match[0];
}

the specificationMDN上的更多内容。

答案 1 :(得分:1)

我正在验证输入文字为a-z或A-Z或\ s,即空格。

在这种情况下你的正则表达式是错误的:

var regex = /!(?:[a-zA-Z|\s]+)/;

应该是:

var regex = /(?:[a-zA-Z\s]+)/;

Pipe被视为字符类中的文字管道字符,并且在正则表达式前面有不需要的!