如何组合两个或多个正则表达式,以便只有当两个表达式都为true时才会发生匹配。例如,我想识别单词边界内包含6位数字(不是以5开头)的文本,即
b[0-46-9]d{5}b
但我想排除包含000000
的文本
^(?!.*000000).*$
abc234576c Match
abc534756c No Match
abc000000c No Match
我该怎么做?
试试这个正则表达式模式:
b(?!.*000000)[^0-9]*[0-46-9]d{5}[^0-9]*b
这假设您希望匹配一个六位数的数字,可能在其前面和后面都有非数字。它还确保该数字不是000000
,并且该数字不以5
开头。
演示
您的第一个正则表达式忽略了一个重要点,\b是识别单词字符(包括数字)和非单词字符之间的对比度
当需要完整的文本时,应该可以:
[a-zA-Z]*[0-46-9]d{5}[a-zA-Z]*
把它和你正确的第二个表达式结合起来,你会得到:
[A-Za-z]*(?!0{6})[0-46-9]d{5}[A-Za-z]*
您可以在此处查看结果。