我想使用正则表达式来验证由分号分隔的值组成的整个字符串。例如,如果每个元素都是[0-9]+
:
((^|;)[0-9]+)+$
这适用于javascript,但不适用于ASP.Net RegularExpressionValidator控件。我见过涉及复制元素的解决方案:
^[0-9]+(;[0-9]+)*$
这不适合我,因为我实际使用的元素正则表达式长度为280个字符,需要保持可维护状态。
我有什么想法吗?
答案 0 :(得分:1)
第二个是正确的。第一个,即使有效,也会匹配带有初始分号的字符串:;1;2;3
,因此交替实际上并不是你想要的。
如果您只想使用分号 - 分隔的字符串,则没有可移植的方法来避免重复。如果你需要比这更可维护的正则表达式,我建议你使用函数或外部脚本从字符串位构造正则表达式。
不幸的是,我不是.NET专家,所以我不能说它是否有一个允许不重复的扩展。其他一些方言,例如Oniguruma,可以让你很好地使用组定义:
(?<segment>[0-9]+)(;\g<segment>)+