验证逗号分隔列表的正则表达式是什么,如下所示:
12365, 45236, 458, 1, 99996332, ......
Run Code Online (Sandbox Code Playgroud)
Asa*_*aph 103
我建议你用以下方式做:
(\d+)(,\s*\d+)*
Run Code Online (Sandbox Code Playgroud)
这适用于包含一个或多个元素的列表.
小智 12
此正则表达式从逗号分隔列表中提取元素,而不管内容如何:
(.+?)(?:,|$)
Run Code Online (Sandbox Code Playgroud)
如果你只是用其他东西替换逗号,它应该适用于任何分隔符.
这取决于您的具体要求.我假设:所有数字,任何长度,数字都不能有前导零,也不能包含逗号或小数点.个别数字总是用逗号分隔,然后用空格分隔,最后一个数字后面没有逗号和空格.任何这些错误都会简化解决方案.
([1-9][0-9]*,[ ])*[1-9][0-9]*
以下是我在精神上建立的方式:
[0-9] any digit.
[1-9][0-9]* leading non-zero digit followed by any number of digits
[1-9][0-9]*, as above, followed by a comma
[1-9][0-9]*[ ] as above, followed by a space
([1-9][0-9]*[ ])* as above, repeated 0 or more times
([1-9][0-9]*[ ])*[1-9][0-9]* as above, with a final number that doesn't have a comma.
Run Code Online (Sandbox Code Playgroud)
匹配重复的逗号分隔项:
(?<=,|^)([^,]*)(,\1)+(?=,|$)
Run Code Online (Sandbox Code Playgroud)
参考.
此正则表达式可用于拆分逗号分隔列表的值.列表元素可以是引用的,不引用的或空的.一对引号内的逗号不匹配.
,(?!(?<=(?:^|,)\s*"(?:[^"]|""|\\")*,)(?:[^"]|""|\\")*"\s*(?:,|$))
Run Code Online (Sandbox Code Playgroud)
参考.
如果这对您很重要,这个将拒绝行首或行尾的无关逗号。
((, )?(^)?(possible|value|patterns))*
Run Code Online (Sandbox Code Playgroud)
替换possible|value|patterns
为与您允许的值匹配的正则表达式。