2011-03-24 117 views
1
function validateFor9DigitNumber() { 
    var txt = document.getElementById('<%= txt9Digit.ClientId %>'); 
    var textValue = parseInt(txt.value); 
    var regSSN1 = new RegExp("^\d{9}$"); 
    if (isNaN(textValue)) 
     alert("Not a Number"); 
    else { 
     alert("A Number"); 
     alert(regSSN1.test(textValue)); 
    } 
} 

我需要一個Javascript函數,它可以匹配9位數字的文本值。使用Javascript匹配模式

在上述需要的功能中,我確實在其他部分登陸並獲得消息"A Number",但是接着收到FALSE用於下一個驗證。

當我輸入一個9位數的數字,比如123456789。即使使用egSSN1.match(textValue),我也會得到FALSE。

我哪裏錯了?

回答

3
var regSSN1 = new RegExp("^\\d{9}$"); 

(注意雙反斜線)

當使用正則表達式文字字符串,你得雙反斜線。

你也可以這樣做:

var regSSN1 = /^\d{9}$/; 

爲了避免這樣的問題。

1

避免使用正則表達式字面逃脫正則表達式中的字符串的問題:

/^\d{9}$/.test("123456789"); // true 

否則:

new RegExp("^\d{9}$").test("123456789"); // false (matches literal backspace) 
new RegExp("^\\d{9}$").test("123456789"); // true (backslash escaped)