正则表达式 - 忽略指定的字符长度

时间:2018-03-01 15:33:16

标签: regex

如何实现正则表达式应该最多允许八个字符但忽略“ - ”(减号)符号?所以例如“1234-5678”应该通过,但“123456789”不通过。这个解决方案对我不起作用:

^(([\d\w]{0,8})|([\d\w-]{0,9}))$

2 个答案:

答案 0 :(得分:2)

通过 ...最多允许八个字符不清楚允许哪种类型的字符,但是根据您自己的尝试,您似乎想要匹配字母和数字以及任意数量的破折号(两个字母或数字之间的一个,最大长度为8,不计算破折号:

^(?:[a-zA-Z0-9]-?){0,7}[a-zA-Z0-9]$

Live demo

注意:这不允许空字符串,至少一个字符。

答案 1 :(得分:1)

这个也允许空字符。 也允许 - 在开始和结束。 还允许多个 - 字符之间:

^-*(?:[\w\d]-*){0,8}$