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