我们有这个正则表达式,当acct,account或loan(不区分大小写)在10位数之前的任何地方时匹配,但我们需要找到匹配关键字是否在10之前或之后数字。
\b(?i)(account|acct|loan)[\S\s]*\b\d{10}\b
示例:
帐号0123456789 - 应该匹配
0123456789 acct - 应该匹配
贷款0123456789 - 应该匹配
会计0123456789 - 不应该匹配
帐号0123456789123 - 不应该匹配
我们只会在特定关键字 AND 10位数字时才会查找匹配项。
答案 0 :(得分:2)
您可以将其拉伸为2个单独的匹配组,即:
/(account|acct|loan)[\S\s]*\d{10}$|\d{10}[\S\s]*(account|acct|loan)$/gim
|
之前的前半部分与数字前面的单词匹配第一个案例,后半部分匹配第二个案例后面的单词
在此处查看演示: https://regex101.com/r/nY5gN4/9
答案 1 :(得分:2)
使用lookaheads / lookbehinds。我实际上最近发现了如何做到这一点。
(?=.*\b(acc(oun)?t|loan)\b)(?=.*\b(\d{10})\b)