Javascript中的模式匹配

时间:2011-03-24 01:34:41

标签: javascript regex

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位数字的文本值。

在上面需要的功能中,我会在else部分登陆并收到消息"A Number",但接收FALSE以进行下一次验证。

当我输入一个9位数字时,请说123456789.即使使用egSSN1.match(textValue),我也会收到错误。

我哪里错了?

2 个答案:

答案 0 :(得分:3)

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

(注意双反斜杠)

为正则表达式使用文字字符串时,必须使用双反斜杠。

你也可以这样做:

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

避免这个问题。

答案 1 :(得分: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)