求大神们帮忙修改正则表达式

mr桀骜不驯 发布于 2014/09/16 16:10
阅读 59
收藏 0

输入框要求输入的内容格式如下:

1、一个字母接上0到3个数字(如'A123','A12','A1','A')

2、1到4个数字(如'1234','123','12','1')

3、一个字母接上1到2个数字再接上一个字母(如'A12A','A1A')

4、一个数字接上“-”再接上1到2个数字(如'1-12')

5、以上格式重复0到2次,以逗号隔开(如'A123','A23,A234','A23,A23A,234')

以上是我写好的符合以上规则的正则表达式,红色部分和黄色部分是相同的,试过使用正则表达式中的引用来取代重复的部分,但是不起作用,求大神们帮忙简化一下表达式。

^((([A-Za-z]\\d{0,3})|\\d{1,4}|([A-Za-z]\\d{1,2}[A-Za-z])|(\\d-\\d{1,2}))(,(([A-Za-z]\\d{0,3})|(\\d{1,4})|([A-Za-z]\\d{1,2}[A-Za-z])|(\\d-\\d{1,2}))){0,2})$  

谢谢!!!

加载中
0
mr桀骜不驯
mr桀骜不驯
为何没有人回答啊???大家快来围观啊
0
Karblue
Karblue
([A-Za-z]\d{0,3})(\d{1,4})([A-Za-z]\d{1,2}[A-Za-z]\d-\d{1,2})  逗号分隔无所谓,取匹配数量就可以了
Karblue
Karblue
回复 @mr桀骜不驯 : 这样可以取到所有匹配的文本啊,能匹配单个值肯定也能取多个值啊,和逗号分隔有神马关系
mr桀骜不驯
mr桀骜不驯
你好,你应该没有理解我的意思。就是有时候我们要在一个文本框里填多个值,每个值之间用逗号分隔,我这里要校验的是用户输入多个值的情况,染黄色的正则表达式里就是匹配单个值的
0
lanybass
lanybass

你的表达有问题,看不太明白。我猜:

先把内容取出来split(,)  分开之后检测是不是有0~3项,不是就OVER。是的话,检测每一项是否满足 1~4之中的任一正则(或者你写的黄色正则),任何一个不满足都OVER

mr桀骜不驯
mr桀骜不驯
你好,其实我写的正则已经满足需求,只是正则表达式里有两部分是重复的,不知道有没有办法简化
返回顶部
顶部