正则表达式模式不仅验证一个字符

时间:2017-08-09 05:26:43

标签: javascript regex character

字符串的开头和结尾字母应该在区间[a-z0-9]中。中间的内容应该在相同的区间[a-z0-9],加上连字符( - )字符。

我的正则表达式是: /^[a-z0-9].*?[a-z0-9-][a-z0-9]$/

它似乎工作正常,除了它不验证只包含一个有效字符的字符串。例如,字符串'a'

3 个答案:

答案 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])?)$

Try It Out