zoukankan      html  css  js  c++  java
  • smary里Js正则表达式不正常

    前段时间写微信公众号程序,里面身份证号码判断时,随便搜了网上的程序来用,结果正确的身份证号也不能过。

    报身份证号错的地方是这样判断的:

        if (!(/^d{17}[0-9X]$/.test(num))) {
            return '输入的身份证号长度不对,或者号码不符合规定!
    15位号码应全为数字,18位号码末位可以为数字或X。';
        }
    

     

    逻辑是没任何问题。但这里的num,把正确的身份证号码放进去,也会报错。

    只好调试,发现源代码的{}被吃掉了。d{17}到了浏览器成了d17

    这下才想起来,模板程序smarty把{}提前解析了。于是在js部分加上了:

    <literal>
    
        if (!(/^d{17}[0-9X]$/.test(num))) {
            return '输入的身份证号长度不对,或者号码不符合规定!
    15位号码应全为数字,18位号码末位可以为数字或X。';
        }
    </literal>

    这样就都正常了。这里的literal 是smarty的语法,是要求smarty 不要对里面的部分解析。

    在这里提醒用smarty且用到了js的regex的同学。

  • 相关阅读:
    .NET CORE 部署3
    Filezilla
    Java 项目转换为maven项目教程
    Andriod studio 汉化教程
    tarjan好题
    关于二分的边界
    2019-10-11
    诗人小G(1D1D动态规划)
    斜率优化dp(玩具装箱)
    扩展欧几里得定律
  • 原文地址:https://www.cnblogs.com/yingjiang/p/13655814.html
Copyright © 2011-2022 走看看