我已经做到了这一点:
^[a-zA-Z0-9]+(?:--?[a-zA-Z0-9]+)*$
但是上面的表达式并没有像我需要的那样限制长度。我需要的模式总共只能匹配 5-6 个字符。所以,这就是它应该如何解决的问题:
safety (valid)
safet- (invalid)
s-a-fe (valid)
-safet (invalid)
s7-45 (valid)
s--fs (invalid)
连续连字符无效。前导和尾随连字符无效。总长度(包括任何连字符)应为 5-6 个字符。我尝试用范围 ({5,6}
) 替换我的 +
,但没有成功。感谢您的帮助。
我尝试的另一条路线是:
^[A-Z0-9][A-Z0-9-]{3,4}[A-Z0-9]$i
这看起来不错且高效,但它允许连续的连字符。
最佳答案
关于php - 正则表达式匹配字母数字,中间可能只有破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25980528/