2013-08-31 16 views
0

我驗證輸入文本是a-z或A-Z或\s即空格。var X = Y轉移字符串只在空格之前。 Y = regex.exec(string);

$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

我採用了棱角分明呼叫的名稱

+2

你怎麼知道這是'$ scope.userInputName'包含的內容? '.exec()'的返回值是一個數組,而不是一個字符串。 – Pointy

+0

好吧,我把'alert($ scope.userInputName)'與語句並沒有它。在第一種情況下,它表示在第二種情況下'abc d' abc'。但是你的數組的點,而不是字符串,是非常好的。所以'match.toString()'應該做到這一點! –

回答

2

match會返回一個數組,而不是字符串(或null如果字符串不匹配)。

如果你想匹配的內容,這些都是在數組中的第一項:

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

the specificationMDN

1

我驗證輸入文字是a-z或A-z或\ s即白色空格。

在這種情況下,你的正則表達式是錯誤的:

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

它應該是:

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

Pipe被視爲字符類中文字豎線並有不必要的!在正則表達式的前面。

+0

對不起,這是一個錯字! –

相關問題