正则表达式将字母数字和破折号字符的CSV与最小数量的值和最小长度的匹配

时间:2018-06-27 12:37:23

标签: javascript regex

我想用JavaScript正则表达式测试CSV字符串。 CSV基本上是文章标签的列表。每个标签只能包含小写字母,数字和连字符。它们还必须是2-24个字符的长度,并且必须在2到24个标签之间。 CSV也不得以逗号结尾。

以下是一些我想匹配和不匹配的示例

one,two,three-3 //Should match
o,two,three //Not match
one,two,three, //Not match
one //Not match
one,,two,three //Not match
11,22,33,44,55,66,77,88,99,1010,1111,1212,1313,1414,1515,1616,1717,1818,1919,2020,2121,2222,2323,2424,2525 //Not match
1234567890123456789212345 //Not match(25 chars long)
one#,two,three //Not match

这是我到目前为止提出的正则表达式,但还不完全是。格式错误时,它仍与完整字符串匹配,只是不包含错误的值。有人有什么想法吗?

(([a-z0-9-]{2,24})(\,{0,1}){2,24}(.*(?<!,)))

2 个答案:

答案 0 :(得分:0)

使用锚点:

^[a-z0-9-]{2,24}(?:,[a-z0-9-]{2,24}){1,23}$

答案 1 :(得分:0)

使用正则表达式模式

^(?:[-a-z0-9]{2,24}(?:,(?=.)|$)){2,24}$

测试此正则表达式here