php preg_match()逗号分隔名称的代码

时间:2014-12-02 08:17:11

标签: php regex

我需要使用preg_match()验证输入模式,以便模式类似于" anyname1,anyname2,anyname3,"。

请注意,最后还有一个逗号。任何字母或数字在逗号之间有效,数字不必出现在最后。例如" nam1e,Na2me,NNm22,"已验证。

我尝试了^([A-Za-z0-9] *, *)*[A-Za-z0-9]$但没有工作。我也经历过其他帖子,但没有得到完美答案。

有人可以给我一个答案吗?

4 个答案:

答案 0 :(得分:2)

听起来你想验证该字符串是否包含一系列逗号分隔的字母数字子字符串,并带有可选的尾随逗号。

在这种情况下,这应该达到你想要的效果。

$str = "anyname1,anyname2,anyname3,";

$re = '~^([a-z0-9]+,)+$~i';

if (preg_match($re, $str)) {
    // String matches the pattern!
}
else {
    // Nope!
}

如果存储在$str中的值包含示例中的尾随空格,并且您不想对该值使用trim(),则以下正则表达式将允许{{{}处的空格。 1}}:

$str

答案 1 :(得分:1)

为什么要使用如此复杂的解决方案解决一个简单的问题?您可以分两步完成相同的操作:

1:修剪空格,换行符,换行符和逗号:

$line = trim($line," \r\n,");

2:在逗号上爆炸以查看所有名称:

$array = explode(',',$line);

你没有告诉我们你将要使用它,所以我不知道你真正需要哪种格式。但我的观点是,你不需要复杂的字符串函数来完成简单的任务。

答案 2 :(得分:1)

如果你只想要没有逗号的实际值,那么你可以简单地使用它:

\w+(?=[,])

http://regex101.com/r/xT6wE4/1

答案 3 :(得分:0)

^([a-zA-Z0-9]+,)+$

你可以这样做。参见演示。

http://regex101.com/r/yR3mM3/8