为什么此正则表达式不适用于 JavaScript?

Why is this Regex not working for JavaScript?

代码应该是匹配的!对于给定的字符串。我尝试了多种方法,但无法正常工作。

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!")
;

尽可能使用本机正则表达式语法:

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

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

您最好在过滤函数中使用 .test()

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