JS里正则表达式一直返回false

var pattern = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
str = '411432199911112020';

if(!pattern.test(str)){
    console.log(pattern);
    alert('身份证输入错误')
}
//这个时候发现打印出来的pattern是: /(^\d15$)|(^\d18$)|(^\d17(\d|X|x)$)/,
//正则表达式里的{}花括号都被删掉了。
//百度时候看到一条[相关文章][1]
//原题主说是一个dtcms生成模板时将花括号都删掉了。

求解决办法

阅读 1.9k
1 个回答

你写的这段代码如果是放在JS文件中或者浏览器开发者工具中执行,打印出的pattern都是正常的。 问题描述中说 console.log打印出的pattern中的花括号没了,严重怀疑是这段代码写在了某视图引擎中,大括号在这个对应的视图引擎中有特殊意义,比如输出变量,{15}直接输出常量15,看起来让人觉得大括号消失了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题