2016-02-29 65 views
0

我有一个正则表达式这样JavaScript正则表达式来检查单个特殊字符的字符串

var regEx = /^([0-9a-z]{7})$|^([0-9a-z-]){8}$/ig; 

我要检查一次发生,如果“ - ”(连字符)输入字符串只发生一次如果字符串长度是8

我可以使用JavaScript检查,但我想知道是否可以用正则表达式完成

+0

是否输入的字符串包含空白空间? – Quinn

+0

不,它不应该 – Anthony

回答

0

您可以使用该负前瞻:

/^[0-9a-z]{7}$|^(?!.*-.*-)[0-9a-z-]{8}$/ig 

更新

正则表达式下面允许不带连字符,如果长度是7,并且它允许一个(且没有更多的)符号时的长度是8:

^[0-9a-z]{7}$|^(?=[^-]*-[^-]*$)[0-9a-z-]{8}$ 
+1

我认为你的意思是'/^[0-9a-z]{7}$|(?!.*-.*-)[0-9a-z-]{8}$/ig ' –

+0

感谢解决方案的工作原理,它可以形成像,字符串的长度可以是8,只要它包含连字符? – Anthony

+0

答案已更新。这是,你需要什么@Anthony? – Adam

相关问题