正则表达式以任何顺序匹配特定关键字和10位数字

时间:2016-06-07 13:22:39

标签: regex

我们有这个正则表达式,当acct,account或loan(不区分大小写)在10位数之前的任何地方时匹配,但我们需要找到匹配关键字是否在10之前或之后数字。

\b(?i)(account|acct|loan)[\S\s]*\b\d{10}\b

示例:

帐号0123456789 - 应该匹配
0123456789 acct - 应该匹配
贷款0123456789 - 应该匹配

会计0123456789 - 不应该匹配
帐号0123456789123 - 不应该匹配

我们只会在特定关键字 AND 10位数字时才会查找匹配项。

2 个答案:

答案 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)