记录关于正则在smarty渲染遇到的坑,昨天在写项目的时候遇到了正则校验身份证号规则一样,身份证号一样,却一个是true,一个是false

it2025-07-24  10

问题展示: 正常在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 如有疑问可以留言,知无不答。

最新回复(0)