这是一个正则表达式,其中字符串必须以字母数字字符开头和结尾,并且可以包含字母数字字符和短划线。
/^[a-zA-Z0-9]{1}[a-zA-Z0-9\-]+[a-zA-Z0-9]{1}$/
如何确保不允许连续破折号?例如:
should allow: some-string
should NOT allow: some--string
由于
编辑:我想允许几个短划线,而不是连续。例如“some-thing-here”是好的,“some-thing”不是。
答案 0 :(得分:7)
不需要带有可选短划线的复杂模式只需使用:
/^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$/
从至少一个字母数字开始。然后可能会有一个冲刺,然后至少有一个字母数字0次以上。
答案 1 :(得分:1)
/^[a-zA-Z0-9]+-?[a-zA-Z0-9]+$/
?
表示“发生零次或一次”
要允许多个片段用一个短划线分隔,请将其更改为:
/^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$/
(...)*
表示最后一组(以-
开头)可能会重复零次或多次。
答案 2 :(得分:1)
类似的东西:
/^[a-zA-Z0-9]{1}\-?([a-zA-Z0-9]+\-?)*[a-zA-Z0-9]{1}$/
关键部分为\-?([a-zA-Z0-9]+\-?)*
,使其显示为“字母/数字,可选短划线,任意数量(某些字母/数字,可选地后跟短划线),以字母或数字结尾。”< / p>
这允许some-string
,my-double-dash-string
但不允许my-double--dash-string
。
答案 3 :(得分:0)
/^[a-zA-Z0-9]+-?[a-zA-Z0-9]+$/
应该工作我相信。您不需要区分字母字符的初始组和结束组。只需要期望每个破折号都被这样的角色所包围。