为什么此正则表达式不适用于 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!")
;
代码应该是匹配的!对于给定的字符串。我尝试了多种方法,但无法正常工作。
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!")
;