我创建了XX -XX格式的正则表达式,其中XX是字母数字。
正则表达式为^[a-z0-9A-Z]{2}-[a-z0-9A-Z]{2}-[a-z0-9A-Z]{2}-[a-z0-9A-Z]{2}$
。但我真正想做的是匹配下面的模式。我的字符串应该每2个字符有一个连字符(-)。
exapmle 1 : XX- OK
exapmle 2 : XX-X OK
exapmle 3 : XX-XX- OK
exapmle 4 : XX-XX-XX OK
exapmle 5 : XX-XX-XX-X OK
exapmle 6 : XX-XX-X OK
exapmle 7 : XX-XX-- NOT OK
exapmle 8 : XX-XX-X- NOT OK
发布于 2011-04-21 12:26:25
这将会起到作用。基本上,您需要任何数字(零或更多)的XX-
,后跟0、1或2个X
^([0-9A-Za-z]{2}-)*[0-9A-Za-z]{0,2}$
发布于 2011-04-21 12:13:25
看起来这行得通:
/^([\w\d]{2}-)*([\w\d]|([\w\d]{2}-?)?)$/
在这里查看它的实际效果:http://jsfiddle.net/sadkinson/FaQe6/6/
解释:
/^([\w\d]{2}-)* -- any number of XX-
([\w\d] -- either a single X
|([\w\d]{2}-?)? -- or two Xs and maybe a dash to end
更新:基于一位评论者非常精明的观察(+1),我修复了上面的问题:)
https://stackoverflow.com/questions/5739335
复制相似问题