RegEx reg_match用户名匹配

时间:2013-11-09 04:42:50

标签: javascript php html regex

我一直试图为用户名reg_match仅接受a-zA-Z0-9-和{{1}不幸的是,我的所有尝试都失败了。

_

我的代码总是返回失败,谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:0)

问题是g修饰符不适用于preg_match;这就是preg_match_all的用途。如果您启用了错误报告(请参阅How to get useful error messages in PHP?),您应该会看到以下问题的警告:

  

警告: preg_match()[function.preg-match]:第#行上的未知修饰符'g'

但是,如果你解决了这个问题,那么你的模式仍然会匹配任何包含单词字符或连字符的字符串。如果有其他无效字符,则无关紧。

尝试使用此模式

$re = '/^[\w-]+$/';

这将匹配字符串的开头,后跟一个或多个单词字符或连字符,后跟字符串的结尾。

另请注意,\w的行为因区域设置而异,这意味着允许的用户名取决于服务器的配置。如果您真的只想匹配a-z0-9,则无论语言环境如何,都应明确指定这些字符:

$re = '/^[a-z0-9_-]+$/i';

这里的i标志使模式不区分大小写,这意味着它也允许使用大写字符。