组合表达式



如何组合两个或多个正则表达式,以便只有当两个表达式都为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]*

您可以在此处查看结果。

最新更新