js正则表达式 - 允许字母,数字和短划线,但不能单独使用一个或多个短划线

时间:2018-03-09 20:34:27

标签: javascript regex

我想要一个允许字母,数字和短划线的正则表达式,([a-z0-9\-]+),但我不希望自己有一个或多个短划线而没有字母或数字< / p>

有可能吗?

---无效
- 无效
3e-qw有效
-3-有效
-a-有效

2 个答案:

答案 0 :(得分:1)

使用word boundary

/^-*\b[a-z\d-]*$/i

demo at regex101

或要求一个字母/数字:

/^-*[a-z\d][a-z\d-]*$/i

demo at regex101

或使用否定lookahead来阻止仅由短划线组成的匹配字符串:

/^(?!-+$)[a-z\d-]+$/i

demo at regex101

答案 1 :(得分:0)

使用以下模式:

[a-zA-Z0-9-]*(?=[a-zA-Z0-9])[a-zA-Z0-9-]*

https://regex101.com/r/E1yHVY/17