正则表达式用于分号分隔列表

时间:2014-11-27 01:29:43

标签: asp.net regex

我想使用正则表达式来验证由分号分隔的值组成的整个字符串。例如,如果每个元素都是[0-9]+

((^|;)[0-9]+)+$

这适用于javascript,但不适用于ASP.Net RegularExpressionValidator控件。我见过涉及复制元素的解决方案:

^[0-9]+(;[0-9]+)*$

这不适合我,因为我实际使用的元素正则表达式长度为280个字符,需要保持可维护状态。

我有什么想法吗?

1 个答案:

答案 0 :(得分:1)

第二个是正确的。第一个,即使有效,也会匹配带有初始分号的字符串:;1;2;3,因此交替实际上并不是你想要的。

如果您只想使用分号 - 分隔的字符串,则没有可移植的方法来避免重复。如果你需要比这更可维护的正则表达式,我建议你使用函数或外部脚本从字符串位构造正则表达式。

不幸的是,我不是.NET专家,所以我不能说它是否有一个允许不重复的扩展。其他一些方言,例如Oniguruma,可以让你很好地使用组定义:

(?<segment>[0-9]+)(;\g<segment>)+