繁体   English   中英

如何从此正则表达式模式获取以下用例的匹配项?

[英]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 处没有0006669
  • (order\W?number)? : 匹配ordernumber可选择用非单词字符分隔
  • \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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM