正则表达式以查找特定长度的数字,但其前面或后面除数字以外的任何字符

2022-03-29 00:00:00 regex php preg-match

我正在尝试设计一种正则表达式模式来在字符串中搜索12位数字。该数字在我要查找的数字的前面或后面可以有任意数量的其他字符(但不是数字)。

到目前为止,我已经/([0-9]{12})/正确地找到了12位数字,但它也将匹配字符串中的13位数字。

该模式应与以下字符串的123456789012匹配

  • "rgergiu123456789012ergewrg"
  • "123456789012"
  • "#123456789012"
  • "ergerg ergerwg erwgewrg" Rgergewrgrewg regewrge 123456789012 ergwerg"

它不应与以下字符串匹配:

  • "123456789012000"
  • "egjkrgkergr 123123456789012"

解决方案

您想要的是四处看看。类似于:

/(?<![0-9])[0-9]{12}(?![0-9])/
如果模式的前面或后面是另一个模式,而不使用该模式,则超前或后视匹配。因此,只有在12位数字的前面或后面没有更多的数字时,此模式才会匹配它们,而不会消耗数字前后的字符。

相关文章