Java 三个以上连续字符的正则表达式
我需要检查字符串(仅限数字和字母组合) 包含的连续字符不得超过3个(仅限字符)。例如: abcd-不允许 AbCd-不允许 abc3-允许 abcr-允许 PQR-不允许 PQR-不允许 pqra-允许 aaaa-不允许 qqq-不允许 aaab-允许 qw-允许 1234-允许 1111-允许 请帮助我找到此表达式的正确正则表达式。说明 此表达式将查找:Java 三个以上连续字符的正则表达式,java,regex,regular-language,Java,Regex,Regular Language,我需要检查字符串(仅限数字和字母组合) 包含的连续字符不得超过3个(仅限字符)。例如: abcd-不允许 AbCd-不允许 abc3-允许 abcr-允许 PQR-不允许 PQR-不允许 pqra-允许 aaaa-不允许 qqq-不允许 aaab-允许 qw-允许 1234-允许 1111-允许 请帮助我找到此表达式的正确正则表达式。说明 此表达式将查找: 按字母顺序排列的四个或更多连续字母(例如:abcd,tuvwxyz) 四个以上或连续的相同字母(例如:aaaa,qqqfdadas) 以
- 按字母顺序排列的四个或更多连续字母(例如:
,abcd
)tuvwxyz
- 四个以上或连续的相同字母(例如:
,aaaa
)qqqfdadas
abcd - not allowed
AbCd - not allowed
abc3 - allowed
abcr - allowed
PQRS - not allowed
pqrs - not allowed
pqra - allowed
aaaa - not allowed
qqqq - not allowed
aaab - allowed
qqqw - allowed
1234 - allowed
1111 - allowed
代码
import java.util.regex.Pattern;
import java.util.regex.Matcher;
class Module1{
public static void main(String[] asd){
String sourcestring = "source string to match with pattern";
Pattern re = Pattern.compile("^(?:(?!(?:abcd|bcde|cdef|defg|efgh|fghi|ghij|hijk|ijkl|jklm|klmn|lmno|mnop|nopq|opqr|pqrs|qrst|rstu|stuv|tuvw|uvwx|vwxy|wxyz|(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z)\\1{3})).)*",Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
Matcher m = re.matcher(sourcestring);
int mIdx = 0;
while (m.find()){
for( int groupIdx = 0; groupIdx < m.groupCount()+1; groupIdx++ ){
System.out.println( "[" + mIdx + "][" + groupIdx + "] = " + m.group(groupIdx));
}
mIdx++;
}
}
}
代码(Python)
结果
此
abcr-允许
和此pqra-允许
与您的要求相矛盾。本次比赛是否应该匹配?我没有任何想法,但<代码>我没有想法,我没有想法,但<代码>我(我)我(我)我)我(我)abcd(我)abcd(我)abcd(我)abcd(我)abcd(我)abcd(我)abcd(我)abcd(我)ABC)abcd(我)abcd)abcd(我)abcd(我)bcde)bcde(卡德德)卡德德(CD)卡德基)CDEFF(我)CDEFF(我)CDEFF(EFF)EFG(EFG(EFG)EFG(EFG)EFG(EFG)EFG(EFGGGH)EFG(EFG)EFG(EFGHGHGHGH)EFG(EFGHGHGH)EFGHGH)FGGGGGGGGH(我)FGH)FGH)FGGH(FGGHHHHHHHHHOVE rstu dy123“作为密码,它将失败,因为我有连续的字母。还有,为什么不允许使用特殊字符?无论如何,你都需要对密码进行哈希运算。我强烈建议你回顾一下你的战略,并检查一下你的战略和一些令人敬畏的答案。因此,我的高度建议你审查一下你的战略,检查一下你的战略,并检查一下你的战略上的一些令人敬畏的答案。你的战略。我的高度建议你审查一下你的战略,检查一下你的战略,并检查一下你的战略上这里的一些令人如此如此如此。<代码>(我)我)我(我)我)你的你的你的战略,我的高度建议你,你的你的战略。我的高度高度建议你。你。你。我的你。你。你。你。我的。我的。我的。你。你。你。我的。你。我的。我。你。你。我的。你。我。我。我的。我。我。我。我。我。我。我。我的。我。我。我。我。我。我。我。我。我。我。我。我。我。我。我。我。我。我。| bcde | cdef | defg | efgh | fghi | ghij | hijk | ijkl | jklm | klmn | lmno | mnop | nopq | opqr|“QQQQQ码方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方| y | z)->([a-z])
@denosk,我来检查一下。希望它能起作用。:-)@falsetru,打得好,这是另一种捕捉任何信件的方式。
$matches Array:
(
[0] => Array
(
[0] =>
[1] =>
[2] => abc3 - allowed
[3] => abcr - allowed
[4] =>
[5] =>
[6] => pqra - allowed
[7] =>
[8] =>
[9] => aaab - allowed
[10] => qqqw - allowed
[11] => 1234 - allowed
[12] => 1111 - allowed
)
[1] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
)
)
import re
pattern_for_invalid_string = re.compile(
r'(?i)' +
r'^' +
r'abcd|bcde|cdef|defg|efgh|fghi|ghij|hijk|ijkl|jklm|klmn|lmno|' +
r'mnop|nopq|opqr|pqrs|qrst|rstu|stuv|tuvw|uvwx|vwxy|wxyz|' +
r'([a-z])\1{3}' +
r'$')
def check(s):
return pattern_for_invalid_string.search(s) == None
for s in 'abcd AbCd abc3 abcr PQRS pqrs pqra aaaa qqqq aaab qqqw 1234 1111'.split():
allowed = 'allowed' if check(s) else 'not allowed'
print('{} - {}'.format(s, allowed))
abcd - not allowed
AbCd - not allowed
abc3 - allowed
abcr - allowed
PQRS - not allowed
pqrs - not allowed
pqra - allowed
aaaa - not allowed
qqqq - not allowed
aaab - allowed
qqqw - allowed
1234 - allowed
1111 - allowed