对于正则表达式,我并不是很新,但到目前为止,我还没有找到足够的表达式来解决我的问题:
我想检查用户输入到textfield中的字符串。字符串必须由一个或多个用分号分隔的术语组成。
实际上有两种术语:
第一个由一个数字组成,然后是一个连字符,然后又是一个数字,例如,22-44
1-4第二项由一个数字和一个逗号重复零或多次组成,例如1,2或4,5,6 。
所有术语都必须用分号结束。
一个有效的输入是:1-4;5,6,7;9-11;或1,3;4-6;8,9,10;
我尝试了这么多的变体,但到目前为止还没有找到解决方案。我的问题是,这个输入字符串可能由任意数量的术语组成。我试着分别用OR操作符和“展望”来解决这个问题,但是没有成功。
任何帮助都将不胜感激。
非常感谢,安
发布于 2011-07-11 01:20:04
这个正则表达式应该能满足您的需要:
/^(?:[0-9]+-[0-9]+;|[0-9]+(?:,[0-9]+)*;)+$/发布于 2011-07-11 01:23:19
编辑:第一个问题看上去分号是分隔符,现在它将分号显示为终止符。
以下是以分号结尾的一个或多个术语的序列,其中每个术语要么是一个数字或一个数字范围,要么是逗号分隔的数字列表:
/^(\d+(-\d+|(,\d+)*)?;)+$/非捕获组
/^(?:\d+(?:-\d+|(?:,\d+)*)?;)+$/发布于 2011-07-11 01:31:09
我的想法..。
^(?:\d+-\d+(?:;|$)|(?:\d+(?:[,;]|$))+)+$
https://stackoverflow.com/questions/6644885
复制相似问题