如何为preg_match

时间:2017-09-02 15:42:37

标签: php regex preg-match

我有以下preg_match;

preg_match('=^\d?[a-z]{1,2}\d{1,4}[a-z]{1,3}$=i', $mystring);

这很好用,但我有一些带有/ H或其他角色的mystrings。它们也可能以-1或-15或其他数字结尾。

Mystrings看起来像W0DLK,WA0DLK,W0DLK-1,W0DLK-20,W0DLK / H,W0DLK / M

如何添加到现有的preg_match中以忽略' - '之后的任何内容。破折号或' /'削减?在我的使用中,首先对该值进行子串化是很困难的。

1 个答案:

答案 0 :(得分:0)

您可以在表达式的末尾使用可选的捕获组,以便允许使用连字符/短划线和字符。

^\d?[a-z]{1,2}\d{1,4}[a-z]{1,3}(?:[-/][a-z\d]+)?$

这允许-/,然后是字母和/或数字。更严格的正则表达式将是:

^\d?[a-z]{1,2}\d{1,4}[a-z]{1,3}(?:-\d+|/[a-z]+)?$

这允许字符串以-和数字,或/和字母结尾。

  1. https://regex101.com/r/6OxdZC/1/
  2. https://regex101.com/r/6OxdZC/2/