我需要一个如下的RegExp代码:3个字母或数字并排,不超过
的示例:
aab
有效
aaa
无效
abc
有效
aabbcc
有效
aabbbcc
无效(bbb)
aa22cc
有效
aa222cc
无效(222)
xxxxxxxxxxx
无效
111111111
无效
xx11xx11
有效
我这样做是为了验证实际的
答案 0 :(得分:5)
如果您想确保不超过两个连续的相同字符,可以使用backreference:
/(.)\1{2}/
此表达式将匹配任何后跟两个自身副本的字符。所以,为了确保没有三个字符的重复,请检查正则表达式是否匹配:
if(!preg_match('/(.)\1{2}/', $input)) {
// "valid"
}
答案 1 :(得分:0)
您有两个要求(似乎):
您就是这样做的:
if (preg_match(
'/^ # Start of string
(?! # Assert that it is not possible to match...
.* # any string,
(.) # followed by any character
\1{2} # which is repeated twice.
) # (End of lookahead)
[a-z0-9]* # Match a string that only contains ASCII letters and digits
$ # until the end of the string.
\Z/ix', # case-insensitive, verbose regex
$subject)) {
# Successful match
}
在regex101上查看。