为什么这个正则表达式不能用于JavaScript?

时间:2015-01-15 23:15:06

标签: javascript regex

代码假设匹配!对于给定的字符串。我尝试了很多东西而无法让它发挥作用。

HTML:

<div id="ssn">123-45-6789</div>

JS:

var regex = new RegExp("^\d{3}-\d{2}-\d{4}$");

$("#div")
    .filter(function() {
        return this.innerHTML.match(regex);
    })
    .html("Matched!")
;

1 个答案:

答案 0 :(得分:4)

如果可以,请使用本机正则表达式语法:

var regex = /^\d{3}-\d{2}-\d{4}$/;

从字符串构造正则表达式时,必须对\个字符加倍,因为它也是字符串常量标记语法中的元字符。如果不这样做,那么当JavaScript将正则表达式字符串传递给RegExp构造函数时,反斜杠就会消失。

在过滤器功能中使用.test()可能会更好:

$("#div")
    .filter(function() {
        return regex.test(this.innerHTML);
    })
    .html("Matched!")
;