2011-03-24 92 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)