如何组合两个或更多个正则表达式,以便仅在两个表达式都为真时才发生匹配。 例如,我想在单词边界内识别包含6位数字(不以5开头)的文本,即
\b[0-46-9]\d{5}\b
但我想要排除包含000000
^(?!.*000000).*$
abc234576c Match
abc534756c No Match
abc000000c No Match
我该怎么做?
答案 0 :(得分:0)
试试这个正则表达式模式:
\b(?!.*000000)[^0-9]*[0-46-9]\d{5}[^0-9]*\b
这假设您希望匹配一个六位数字,可能与之前和之前的非数字匹配。它还确保该号码不是000000
且该号码不以5
开头。
答案 1 :(得分:0)
你的第一个正则表达式错过了一个重点,\ b是识别单词字符(包括数字)和非单词字符之间的对比。
当需要整个文本时,这应该有效:
$this->validate($request, [ '*.item_id' => 'required|integer', '*.item_no' => 'required|integer', '*.size' => 'required|max:191', ]);
将它与正确的第二个表达式相结合,你会得到:
[a-zA-Z]*[0-46-9]\d{5}[a-zA-Z]*
您可以查看结果here。