使用Javascript匹配模式
问题描述:
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。
我哪里错了?
答
var regSSN1 = new RegExp("^\\d{9}$");
(注意双反斜线)
当使用正则表达式文字字符串,你得双反斜线。
你也可以这样做:
var regSSN1 = /^\d{9}$/;
为了避免这样的问题。
答
避免使用正则表达式字面逃脱正则表达式中的字符串的问题:
/^\d{9}$/.test("123456789"); // true
否则:
new RegExp("^\d{9}$").test("123456789"); // false (matches literal backspace)
new RegExp("^\\d{9}$").test("123456789"); // true (backslash escaped)