匹配字符串与数字和字母6长度

时间:2016-03-24 11:11:07

标签: php regex

我正在尝试匹配以下列表中的所有SKU代码

Array([0] => Array([0] => CLASSI[1] => LEATHE[2] => **0MEFCQ**))

<span>VANS CLASSIC SLIP-ON CROC LEATHER **0MEFCQ** 36-40</span>

([0] => Array([0] => TRAMPK[1] => **XH8GKA**))

<span>NOWE TRAMPKI VANS  SK8-HI SLIM ZIP **XH8GKA** 36-40</span>

([0] => Array([0] => DAMSKI[1] => TRAMPK[2] => AUTHEN[3] => **EE3W00**))

<span>DAMSKIE TRAMPKI VANS AUTHENTIC **EE3W00** 35-41</s

我曾尝试使用以下REGEX,但它会返回更多字符串。我只想要SKU代码。

preg_match_all('/[A-Z0-9]{1,2}\w{4}/', $title, $match);

2 个答案:

答案 0 :(得分:0)

要匹配SKU代码,您必须将长度为6的字符串与[A-Z] + [0-9]匹配。

试试这个正则表达式。

正则表达式: \b(?=.*\d)[A-Z0-9]{6}\b

<强>解释

    开始和结束时
  • \b检查单词边界。

  • (?=.*\d)检查是否存在至少一位数字。这是SKU Code的格式。如果存在,那么只有接下来的6个字符被视为代码。

  • 如果先前条件为真,则
  • [A-Z0-9]{6}匹配代码。

<强> Regex101 Demo

<强> Ideone Demo

答案 1 :(得分:0)

这很长,但它只是你想要的方式:

   ([0-9]{1}[A-Z0-9]{5}|[A-Z0-9]{5}[0-9]{1}|[A-Z]{1}(?:[0-9]{1}[A-Z0-9]{3}|[A-Z0-9]{3}[0-9]{1}|[A-Z]{1}(?:[0-9]{1}[A-Z]{1}[A-Z]{1}|[0-9]{1})[A-Z]{1})[A-Z]{1})

描述: 必须从一个数字开头或以一个结尾,否则中间的4个字母必须以数字开头或以一个结尾,否则2个字母必须以数字开头或以一个结尾

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