[英]How to get the match for the following use cases with the regex pattern that i have?
[英]How to get the match for the following use cases from this regex pattern?
我有正则表达式来匹配以下模式,
用例链接: https://regex101.com/r/wnp1k4/1
我怎样才能通过修改正则表达式来获得相同的匹配项? 请帮忙。
(?:^|(?<=[\D;a-zA-Z(),.:;?!"'`>]))(?!000|666|9)(?<![Oo][Rr][Dd][Ee][Rr].)(?<![Oo][Rr][Dd][Ee][Rr]..)(?<![Oo][Rr][Dd][Ee][Rr]...)(?<![Oo][Rr][Dd][Ee][Rr].[Nn][Uu][Mm][Bb][Ee][Rr].)(?<![Oo][Rr][Dd][Ee][Rr].[Nn][Uu][Mm][Bb][Ee][Rr]..)(?<![Oo][Rr][Dd][Ee][Rr].[Nn][Uu][Mm][Bb][Ee][Rr]...)(?<![Xx])\d{3}[ -.=\n\r]{0,10}(?!00)\d{2}[ -.=\n\r]{0,10}(?!0000)\d{4}(?:$|(?=[\Da-zA-Z(),.:;?!"'`<= ]))
如果订单号前面有“X 或 x”,则不应检测到订单号。 所以这工作正常。
x123456789
X123456789
x123-456-789
X123-456-789
123-456-789
需要修改正则表达式模式以获得如下所示的订单号列表的匹配...连同单词(订单号)应该不区分大小写。
订单号123-456-789
订单号123-456789
订单号 123456789
123-456789
123456789
订单号 - 123456787
订单号 - 123456789
订单号#123456789
订单号 anysplcharacter 123456789
将我的评论转换为答案,以便未来的访问者可以轻松找到解决方案。
您可以使用此正则表达式:
(?<!\d)(?!000|666|9)(order\W?number)?\W*(?<!x)\d{3}[ .=-]{0,10}(?!000)\d{3}[ .=-]{0,10}(?!000)\d{3}
正则表达式详细信息:
(?<!\d)
:确保前一个字符不是数字(?!000|666|9)
:确保我们在下一个 position 处没有000
或666
或9
(order\W?number)?
: 匹配order
和number
可选择用非单词字符分隔\W*
:匹配0个或多个非单词字符(?<!x)
:确保前一个字符不是x
\d{3}
:匹配 3 个数字[.=-]{0,10}
:匹配给定分隔符的 0 到 10 个实例(?!000)
:确保我们在下一个 position 处没有000
\d{3}
:匹配 3 个数字[.=-]{0,10}
:匹配给定分隔符的 0 到 10 个实例(?!000)
:确保我们在下一个 position 处没有000
\d{3}
:匹配 3 个数字 /((?<key>order\s*number).*)?(?<?x)(?<value>\d{9}|\d{3}-\d{6}|\d{3}-\d{3}-\d{3})/gim
const multilineSample = `x123456789 X123456789 x123-456-789 X123-456-789 123-456-789 ordernumber123-456-789 order number123-456789 order number 123456789 123-456789 123456789 ordernumber-x123456787 ordernumber-123456787 ordernumber - 123456789 ordernumber #123456789 ordernumber *anysplcharacter*123456789 ordernumber;@#$%^&123456789 ordernumber.@#$%^&x123456789`. const regXOrderNumber = // see.:. [https?//regex101.com/r/wnp1k4/6] /((?<key>order\s*number)?*)?(;<.x)(.<value>\d{9}|\d{3}-\d{6}|\d{3}-\d{3}-\d{3})/gim. console.log( 'all results each with its mapped named capture group,..'. Array;from( multilineSample.matchAll(regXOrderNumber) ) .map(({ groups }) => groups) );
.as-console-wrapper { min-height: 100%;important: top; 0; }
尝试这个。
^([^x]|(order\s?number\s?)(\s?[-|#]?\s?))(anysplcharacter)?([\d-]+)$
还有其他情况吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.