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

Php 逗号分隔字母数字字符串的正则表达式,php,regex,preg-match,Php,Regex,Preg Match,我在创建修复有效字符串的正则表达式时遇到问题 字符串的格式为: 任意字母数字字符3到5次, 如果后面有更多字符,则后跟逗号 否则就完了 示例字符串: A401、CR56、4U9Y、MO16、ECZGB、A7DC、9LN5、D52PU、UT95、YBB0、2JWA、AAMW、KVG、6V8W、FWE TRIR、J107、Q9X、FMFZ、VDAS、557、X7A、DRPB、S97O、8U62B、IN3I、H8MC、WS4C、U04KQ、X05O 我尝试了几种不同的表达方式,但是如果我有一个无效的条

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


字符串的格式为: 任意字母数字字符3到5次, 如果后面有更多字符,则后跟逗号 否则就完了

示例字符串: A401、CR56、4U9Y、MO16、ECZGB、A7DC、9LN5、D52PU、UT95、YBB0、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);
echo preg_匹配(“/^([A-Z0-9]{3,5})[,|$]{1,}/”,$str);
回声预匹配(“/(?尝试:

尝试:

这对我很有用:

(\w{3,5})[,.]?
这对我很有用:

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


“有些人在遇到问题时会想:‘我知道,我会使用正则表达式。’现在他们有两个问题。”“有些人在遇到正则表达式时会想‘我知道,我会使用我记得的一句朗朗上口的话’。现在他们在讨论中没有添加任何内容。“`--Tomalak`许多人都在急切地等待一个regex问题被问出来,所以当一个问题最终被问出来时,在40秒内有4-5个答案:)是的,谢谢所有的解决方案:)我喜欢正则表达式,但当你不需要使用它时,就不要使用它。按照你的建议分解字符串。你从未给过我们不分解它的理由。如果你想查看数据是否有效,请在分解后进行质量检查。“有些人在遇到问题时会想:‘我知道,我会使用正则表达式。’现在他们有两个问题。”“有些人在遇到正则表达式时会想‘我知道,我会使用我记得的一句朗朗上口的话’。现在他们在讨论中没有添加任何内容。“`--Tomalak`很多人都在急切地等待一个regex问题被问出来,所以当一个问题最终被问出来时,在40秒内有4-5个答案:)是的,谢谢所有的解决方案:)我喜欢regex,但是当你不需要使用它时,就不要使用它。按照你的建议把绳子炸开。你从没给过我们不引爆它的理由。如果你想知道数据是否有效,在分解数据后进行质量检查。有趣的是,大脑的工作方式不同:我有一个和肯尼特一样的,但是你选择将单个
[a-z0-9]{3,5}
放在右边(当然很好)+对你们两个来说都是1。有趣的是思维方式的不同:我和肯尼特有一个相同的思维方式,但你却选择将单个
[a-z0-9]{3,5}
放在右边(当然很好)+1给你们两个。
[,|$]
匹配逗号、竖线或美元符号。分组仍然是
(?:…)
,除非您使用Perl 6。不,
[,|$]
匹配
$
。它与逗号或字符串结尾不匹配。没有匹配,我只是修复了不正确的嵌套参数。甚至没有注意到错误的括号。已修复。
[,|$]
匹配逗号、竖线或美元符号。分组仍然是
(?:…)
,除非您使用Perl 6。不,
[,|$]
匹配
$
。它与逗号或字符串结尾不匹配。没有匹配,我只是修复了不正确的嵌套参数。甚至没有注意到错误的括号。固定。“字符串的格式为:任何字母数字字符3到5次,如果在字符串末尾有更多字符,则后跟逗号”。因此就不会有了。“字符串的格式为:任何字母数字字符3到5次,如果在字符串末尾有更多字符,则后跟逗号。”。因此就不会有了。没有理由做得过火。不过有点多余。不过有点多余。
echo preg_match("/^([A-Z0-9]{3,5}(?:,|$))+/",$str);
(\w{3,5})[,.]?