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


match strings with numbers and letter 6 length

我正在尝试匹配以下列表中的所有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);

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

试试这个正则表达式。

Regex:'b(?=.*'d)[A-Z0-9]{6}'b

解释:

  • CCD_ 7在开始和结束时检查字边界。

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

  • 如果前面的条件为true,则[A-Z0-9]{6}与代码匹配。

Regex101演示

Ideone演示

这有点长,但正是你想要的方式:

   ([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