自从用了回复可见的功能
网友们的昵称和邮箱真是千奇百怪啊
所以我还是折腾下吧
把Emlog的评论的昵称和邮箱匹配弄一下吧
默认的Emlog评论表单验证的时候,
它只是做做样子,
基本是昵称和邮箱不为空
控制昵称字符长度
没有具体的
所以还是完善一下吧
来来我们先唠叨一下.
正则表达式的定义
正则表达式是由普通字符和特殊字符(也叫元字符或限定符)组成的文字模板. 如下便是简单的匹配连续数字的正则表达式:
- /[0-9]+/
- /\d+/
“\d” 就是元字符, 而 “+” 则是限定符.
元字符
元字符 | 描述 |
---|---|
. | 匹配除换行符以外的任意字符 |
\d | 匹配数字, 等价于字符组[0-9] |
\w | 匹配字母, 数字, 下划线或汉字 |
\s | 匹配任意的空白符(包括制表符,空格,换行等) |
\b | 匹配单词开始或结束的位置 |
^ | 匹配行首 |
$ | 匹配行尾 |
反义元字符
元字符 | 描述 |
---|---|
\D | 匹配非数字的任意字符, 等价于[^0-9] |
\W | 匹配除字母,数字,下划线或汉字之外的任意字符 |
\S | 匹配非空白的任意字符 |
\B | 匹配非单词开始或结束的位置 |
[^x] | 匹配除x以外的任意字符 |
可以看出正则表达式严格区分大小写.
重复限定符
限定符共有6个, 假设重复次数为x次, 那么将有如下规则:
限定符 | 描述 |
---|---|
* | x>=0 |
+ | x>=1 |
? | x=0 or x=1 |
{n} | x=n |
{n,} | x>=n |
{n,m} | n<=x<=m |
好了言归正传,都说记录,具体我就不说了
- if (empty($name)) {
- emMsg('评论失败:请填写姓名');
- } elseif (strlen($name) > 15 || !preg_match('/[\x{4e00}-\x{9fa5}-a-zA-Z0-9]/iu',$name)) {
- emMsg('评论失败:姓名不符合规范');
- } elseif (empty($mail) || !preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$mail)){
- emMsg('评论失败:邮件地址不规范或未填写邮件地址', 'javascript:history.back(-1);');
- }
看了N久的正则了 还是不会写...只能在网上搜索......
@龙笑天: 容易混乱! 对我来说
非常感谢老哥,看完来了点灵感,哈哈哈
@咪卡博客:有用就好
感觉匹配邮箱的正则表达式还可以改进一下。
@Clarke:没必要,这样就可以了