• 技术文章 >后端开发 >php教程

    formvalidtor在thinkphp中的正则表达式书写的有关问题――大家帮忙

    2016-06-13 12:51:33原创391

    formvalidtor在thinkphp中的正则表达式书写的问题――大家帮忙
    本帖最后由 wadelin511 于 2013-03-13 12:25:31 编辑


    使用formValidator-4.1.3.js进行email格式check。
    书写方式如下。

    $("#email").formValidator({onShow:"请输入邮箱",onFocus:"邮箱6-100个字符,输入正确了才能离开焦点",onCorrect:"恭喜你,你输对了",defaultValue:"@"}).inputValidator({min:6,max:100,onError:"你输入的邮箱长度非法,请确认"}).regexValidator({regExp:"^([\\w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([\\w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$",onError:"你输入的邮箱格式不正确"});


    在静态网页中测试正常。但是在thinkphp的模板文件中,经过解析后的代码变成了
    regExp:"^([\w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([\\w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"

    导致formValidator报字“符集越界”的问题。

    为什么表达式被更改了。\\w变成了\w?
    请大家帮忙确认!
    thinkphp formvalidtor 符集越界


    ------解决方案--------------------
    模板文件会被读取到变量中,所以 \\w 变成了 \w
    要写作 \\\w 或 \\\\w
    ------解决方案--------------------
    这就不清楚了,需要看 php 的 C 源代码才能分析原因
    不过这不是什么人都可以做到的
    实际使用中也不必深究,遇到加一个“\”不行时就再加一个,如此循环知道不出错

    你可以看到国外的不少代码中会有连续四五个 \ 的

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    相关文章推荐

    • 分享PHP函数使用小工具(附代码示例)• PHP安全编码总结(经验分享)• 非常全面!PHP常见漏洞代码总结!• 一文详解PHP实现职责链设计模式(附代码示例)• php实现通过JSON RPC与go通讯(附代码)
    1/1

    PHP中文网