我正在尝试匹配以下列表中的所有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);
答案 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个字母必须以数字开头或以一个结尾