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

问题描述 投票:0回答:2

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

^(([\d\w]{0,8})|([\d\w-]{0,9}))$
regex
2个回答
2
投票

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

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

Live demo

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


1
投票

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

^-*(?:[\w\d]-*){0,8}$
© www.soinside.com 2019 - 2024. All rights reserved.