逗号分隔的字母数字字符串的正则表达式

时间:2010-02-17 15:18:36

标签: php regex preg-match

我在创建正则表达式时遇到问题,该表达式将修复有效的字符串。

字符串的格式为: 任何字母数字字符3到5次, 如果之后有更多字符,则后跟逗号 否则它是字符串的结尾

示例字符串: A401,CR56,4U9Y,MO16,ECZGB,A7DC,9LN5,D52PU,UT95,YBPB0,2JWA,AAMW,KVG,6V8W,FWE

TRIR,J107,Q9X,FMFZ,VDAS,557,X7A,DRPB,S97O,8U62B,IN3I,H8MC,WS4C,U04KQ,X05O。

我尝试了一些不同的表达式,但如果我的条目无效,则似乎没有任何表达式匹配。我知道我可以爆炸字符串,并循环遍历数组,但尝试只在一个表达式中执行此操作,因为它看起来很简单,但无法弄明白。

Exmaple模式:

echo preg_match("/^([A-Z0-9]{3,5})[,|$]{1,}/",$str);
echo preg_match("/((?<=[^|,])([A-Z0-9]{3,5}){1}(?=[,|$])){1,}/",$str);

以及它们的各种变化,但我无法找到获胜的模式,所有帮助都很受欢迎。

干杯, PSY

4 个答案:

答案 0 :(得分:2)

/^[A-Z0-9]{3,5}(?:,[A-Z0-9]{3,5})*$/

答案 1 :(得分:2)

/^([a-z0-9]{3,5},)*[a-z0-9]{3,5}$/

答案 2 :(得分:0)

这对我有用:

(\w{3,5})[,.]?

答案 3 :(得分:-1)

尝试:

echo preg_match("/^([A-Z0-9]{3,5}(?:,|$))+/",$str);