使用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?
请大家帮忙确认!
模板文件会被读取到变量中,所以 \w 变成了 w
要写作 \w 或 \\w
谢谢回复。按照上述修改后ok了。
还有一点疑问。
regExp:"^([ \w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([ \w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"
表达式中有两个 \w,为什么只有前面前面的 \w被转换成了 w,后面的\w可以不变的?
这就不清楚了,需要看 php 的 C 源代码才能分析原因
不过这不是什么人都可以做到的
实际使用中也不必深究,遇到加一个“”不行时就再加一个,如此循环知道不出错
你可以看到国外的不少代码中会有连续四五个 的
可能thinkphp在模板解析时,只对字符串中的第一个\进行变换,后面的都当作字符串处理了。
谢谢了。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号