如何构建一个正则表达式,禁止连字符出现在字符串的开头和结尾?

时间:2017-10-19 13:21:58

标签: regex

我想构建一个正则表达式,该表达式仅匹配[A-Za-z0-9\-]一个附加规则,连字符(-)不允许出现在开头和结尾。

例如:

my-site匹配。

m匹配。

mysite-不匹配。

-mysite不匹配。

目前,我已提出^[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]+$

但这并不匹配m

如何更改正则表达式以满足我的需求?

1 个答案:

答案 0 :(得分:0)

使用环顾四周:

^(?!-)[A-Za-z0-9-]*(?<!-)$

这样做的原因是环顾四周并没有消耗输入,因此前瞻和后面的内容都可以在相同的字符上断言。

请注意,如果它是第一个或最后一个字符,则不需要在字符类中转义短划线。