Php Regex-防止重复字符
我花了好几个小时试图解决这个问题 这是我的正则表达式字符串:Php Regex-防止重复字符,php,regex,validation,Php,Regex,Validation,我花了好几个小时试图解决这个问题 这是我的正则表达式字符串: ^(?=.{4})(?!.{32})[a-zA-Z0-9\]+(\.-(\.-)*-?|-(\.-)*\)[a-zA-Z0-9\]+)*$- 你可以测试一下 以下是我试图完成的(用户名验证): 字符串长度范围->确定 字母,数字,u-。允许(-and.在用户名的开头和/或结尾不允许)->确定 需要防止重复字符(行中超过5个字符)->需要帮助 请尝试以下操作: ^(?=.{4,31}$)(?![-.])(?:(?!(.)\1{4})[-
^(?=.{4})(?!.{32})[a-zA-Z0-9\]+(\.-(\.-)*-?|-(\.-)*\)[a-zA-Z0-9\]+)*$
-你可以测试一下 以下是我试图完成的(用户名验证):
^(?=.{4,31}$)(?![-.])(?:(?!(.)\1{4})[-.\w])+(?<![-.])$
^(?=.{4,31}$)(?![-.])(?:(?!()\1{4}[-.\w])+(?)?
例如:
这假设您实际上指的是防止重复字符,而不是允许重复字符。这是:
^(?=.{4})(?!.{32})(?!.*(.)\1{4})\w[\w.-]+\w$
使用另一个(负)向前看来处理第三个条件。这个条件将确保没有字符,后面跟着它4次
我还通过使用表示[a-zA-Z0-9]
的\w
简化了您的字符类。此外,正如F.J所指出的,您可以将前两个lookahead组合成一个:
^(?=.{4,31}$)(?!.*(.)\1{4})\w[\w.-]+\w$
请举例说明您要匹配的字符串当前失败。很难说出“允许在内联5个字符以上重复字符”是什么意思。您是说要匹配“aaaa”而不是“aaaa”?你需要允许重复字符或阻止?+1,这比我的版本更清晰,我的版本在匹配时进行重复字符检查,而不是作为自己的前瞻。伙计,你太棒了!非常感谢你;现在我想咬自己…浪费时间害羞地问:-(没问题:)如果它解决了你的问题,请考虑接受答案(通过点击绿色复选)来显示其他人,谁可能会发现这个问题在未来,解决方案是什么。