我正在尝试将 preg_match 检查从 url 检查更改为用户名检查,最小/最大 2-16 个字符、破折号、空格和连字符可以接受。我收到这个错误
Warning:preg_match() [function.preg-match]:编译失败:在偏移量 14 处没有可重复的内容
if(empty($string) || preg_match("#^([\w- ]{2,16}*(?:.[\w- ]{2,16}*)+):?(d+)?/?#i", $string))
寻找 URL 的旧代码
if(empty($string) || preg_match("#^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?#i", $string))
问题就在这里:
[\w- ]{2,16}*
你不能使用{2,16}
and *
在一起时,您只能使用其中之一。
如果您想要匹配 2 至 16 人的团体[\w- ]
s,至少 0 次,将其包装在子模式中并附加*
外部:
(?:[\w- ]{2,16})*
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)