字符串的开头和结尾字母应该在区间[a-z0-9]中。中间的内容应该在相同的区间[a-z0-9],加上连字符( - )字符。
我的正则表达式是:
/^[a-z0-9].*?[a-z0-9-][a-z0-9]$/
它似乎工作正常,除了它不验证只包含一个有效字符的字符串。例如,字符串'a'
。
答案 0 :(得分:3)
/^([a-z0-9]+-)*[a-z0-9]+$/
一
A-A
A-A-A
答案 1 :(得分:2)
如果我理解正确,您需要一个可以匹配任何这些场景的RegExp
aabc-defg
abc
a-abc
abc-a
a
z0123abc-def4567y
这是我得到的^[\w\d]*[\-]?[\w\d]*$
工作示例:http://regexr.com/3gh4o
修改强>
这是建议的修改:/^[0-9a-z]*[-]?[0-9a-z]*$/
,也可以。
答案 2 :(得分:2)
据我了解,您正在查找由完全小写的字母数字字符和连字符组成的任何字符串,并且第一个和最后一个字符不能是连字符。
我已经修改了您的RegEx,以便它接受任意数量的字符,但我不确定这是您正在寻找的,或者它是否是最简单的方法。为了严格匹配您描述的内容,我必须删除原始模式的一部分才能获得:
^(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)$