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