正则表达式,用于以逗号或逗号和空格分隔的项目列表

时间:2011-02-15 09:00:43

标签: regex

嘿 我无法弄清楚如何为我的网站编写正则表达式,我想让用户输入以逗号或逗号和空格分隔的项目(标签)列表,例如“apple,pie,applepie” 。是否有可能拥有这样的正则表达式? 谢谢!

编辑: 我想要一个javascript的正则表达式,以便在用户提交表单之前检查输入。

9 个答案:

答案 0 :(得分:28)

您正在寻找的东西看似简单:

[^,]+ 

这将为您提供每个逗号分隔的标记,并将排除空标记(如果用户输入“a,b”,您将只获得'a'和'b'),但如果他们输入“它将会中断” a,,b“。

如果你想正确地从任何一边剥离空格(并且只排除空白元素),那么它会变得更复杂一些:

[^,\s][^\,]*[^,\s]*

然而,正如一些评论中提到的那样,为什么你需要一个正则表达式,其中一个简单的拆分和修剪可以解决这个问题?

答案 1 :(得分:4)

假设列表中的单词可能是从a到z的字母,并且您允许但不要求逗号分隔符之后的空格,则您的reg exp将是 [A-Z] +(\ S * [A-Z] +)*

这匹配“ab”或“ab,de”,但不是“ab,dc”

答案 2 :(得分:2)

这可能有效:

([^,]*)(, ?([^,]*))*

答案 3 :(得分:1)

这是一个更简单的解决方案:



    console.log("test, , test".match(/[^,(?! )]+/g));




它不会破坏空属性并在属性之前和之后去除空格。

答案 4 :(得分:1)

这个帖子差不多7岁了,5个月前还活跃了,但是我希望得到与OP相同的结果,在阅读完这个帖子后,遇到了一个似乎运作良好的漂亮解决方案

.match(/[^,\s?]+/g)

这是一张图片,上面有一些示例代码,说明我如何使用它以及它是如何工作的

enter image description here

关于正则表达式......我想更准确的说法就是说"定位任何不是逗号的东西,然后是任意(可选)数量的空格" ?

答案 5 :(得分:1)

我经常使用昏迷分隔模式工作,对我来说,这是可行的:

((^|[,])pattern)+

其中“模式”是单元素正则表达式

答案 6 :(得分:0)

([^,]*)

查找给定字符串中的逗号,然后将它们分开。关于空白?你不能用逗号吗?删除空格?

答案 7 :(得分:0)

我需要对逗号分隔的输入字母字符进行严格验证,没有空格。如果有人需要,我最终会使用这个:

/^[a-z]+(,[a-z]+)*$/

答案 8 :(得分:-7)

这样的事情应该有效:((apple|pie|applepie),\s?)*