问题展示:
正常在js中是可以的。
在我项目中出现的问题:
明明一摸一样的校验规则和身份证号,为什么就是结果不一样呢?
接下来我们打印一下我的项目中的正则
打印一看果然有问题,相信大家也一定看到了问题所在,就是我们正则的大括号{}没了,这是为什么呢?
后来经查阅资料终于明白,在做web开发时,难免会写一些JS,jquery代码。js和jquery里面都会{}这样的符号,smarty会不会把它理解成php的变量呢?答案是:smarty肯定会把它理解变量了。
所以在项目中的正则就失效了,问题知道了,接下来就好解决了
只需要给我们正则外嵌套一个smarty标签{literal}{/literal}就可以解决了。
代码,可直接复制
{literal}
var p = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
//输出 true
console.log(p)
console.log(p.test("11010519491231002X"));
{/literal}
关于smarty不常用标签扩展:http://www.thinkphp.cn/code/968.html
如有疑问可以留言,知无不答。