繁体   English   中英

如何使用我拥有的正则表达式模式匹配以下用例?

[英]How to get the match for the following use cases with the regex pattern that i have?

您好,请编写以下正则表达式。

(?<!x)(\d{9}|\d{3}-\d{6}|\d{3}-\d{3}-\d{3})

我想修改现有的正则表达式,以便下面的用例可以匹配,现在只有少数匹配。

笔记:

  1. 如果数字前面有“X 或 x”并且该部分工作正常,则不应检测到 9 位订单号。
  2. 9 位数字、数字之间的非数字字符或空格(最多 3 个)也应该匹配。

用例:

这是需要匹配的用例列表

https://regex101.com/r/iFiwx5/1

示例:这些是需要与正则表达式匹配的用例。

  1. 123 45 6789
  2. 123-45-6789
  3. 123-45-6789
  4. 123 – 45 – 6789
  5. 123.45.6789
  6. 123_45_6789
  7. 123 456 789
  8. 123-456-789
  9. 123 – 456 – 789
  10. 123.456.789
  11. 123_456_789
  12. 1234 56 789
  13. 1234-56-789
  14. 1234 – 56 – 789
  15. 1234.56.789
  16. 1234_56_789
  17. 12 345 6789
  18. 12-345-6789
  19. 12 – 345 – 6789
  20. 12.345.6789
  21. 12_345_6789

在这方面的任何帮助都会非常好。

如果我理解问题正确,您可以使用此正则表达式:

(?<!x)(?=(?:[._ –-]*\d){9})\d{2,}[._ –-]*\d{2,}[._ –-]*\d{2,}

正则表达式演示

解释:

  • (?<!x)确保数字前面没有字母x
  • (?=(?:[._ –-]*\d){9})确保存在至少 9 个数字,用 0 个或更多允许的分隔符分隔
  • [._ –-]* :允许每 2 个或更多数字出现 0 个或更多这些分隔符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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