用new创建正则表达式的字符串注意事项

例子:验证个人身份证的正则表达式创建

var regex = new RegExp("^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|(X|x))$")

这样创建出来的正则表达式变为:

/^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|(X|x))$/

d前面都没有了反斜杠,是因为\是字符串里的特殊字符,字符串里需要用两个\才能表示出一个\

 

正确做法:

var regex = new RegExp("^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|(X|x))$")

这样才能创建出正确的正则表达式

/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|(X|x))$/

posted on 2017-08-16 12:39  jr_goon  阅读(633)  评论(0编辑  收藏  举报