如何实现正则表达式应该最多允许八个字符但忽略“ - ”(减号)符号?所以例如“1234-5678”应该通过,但“123456789”不通过。这个解决方案对我不起作用:
^(([\d\w]{0,8})|([\d\w-]{0,9}))$
通过...应该最多允许八个字符,不清楚允许哪种类型的字符,但从你自己的尝试看,你似乎想要匹配字母和数字以及任意数量的破折号(两个字母或数字之间),最大长度8个不计算破折号:
^(?:[a-zA-Z0-9]-?){0,7}[a-zA-Z0-9]$
注意:这不允许空字符串,至少一个字符。
这个也允许空字符。也允许 - 在开始和结束。还允许多个 - 字符之间:
^-*(?:[\w\d]-*){0,8}$