自定义模式的正则表达式问题

时间:2017-12-11 18:14:58

标签: php regex preg-replace

以下是模式示例:

AB17-12345

所以前两个字符是字母字符,第三个和第四个字符是数字,后跟一个"破折号"然后是5位数字。

这就是我现在所拥有的:

"/[^A-Z]{2}\d{5}/"

如果有人可以帮我解决这个问题,那将非常有帮助,因为我只是正则表达式的首发。

2 个答案:

答案 0 :(得分:2)

您可以使用:

^[A-Z]{2}\d{2}-\d{5}$

  • 从字符串^
  • 的开头
  • 匹配2个大写字符[A-Z]{2}
  • 匹配2位\d{2}
  • 匹配短划线-
  • 匹配5个整数\d{5}
  • 字符串$
  • 的结尾

答案 1 :(得分:0)

这是对The Fourth Bird的回答的补充,这是正确的我正在解释你的正则表达式意味着什么以及你犯错的地方。

  

如果有人可以帮我解决这个问题,那将非常有帮助,因为我只是正则表达式的首发。

您要对[^A-Z]{2}\d{5}尝试的内容解释如下:

  • [^A-Z]{2}匹配大写字母以外的 ,因为您使用的是negated character class

  • \d{5}将匹配五位数。

对于您的输入AB17-12345,它将匹配7-12345

<强> Regex101 Demo

它不匹配AA12345,BC12323等。

匹配的可能性很多,例如aa11234, $412345, @#12323等等。