正则字符串,禁止字符串末尾的某些字符

时间:2015-05-04 18:56:16

标签: regex

使用RegEx验证用户输入,我想匹配任何以字母开头的字符串,后跟0或更多字符,如下所示:

\A[a-z][a-z0-9_-]*

但禁止使用连字符和下划线作为字符串中的最后一个字符。我如何完成此RegEx?

匹配字符串的示例:

a
a-b
ab_c--de

不匹配字符串的示例:

a-
abc-
a_
-

3 个答案:

答案 0 :(得分:3)

我不确定它需要前瞻/落后。这对你有用吗?

\A[a-z]([-_]*[a-z0-9])*\Z

答案 1 :(得分:2)

^(?!.*(?:_|-)$)[a-z][a-z0-9_-]*$

这应该为你做。参见演示。

https://regex101.com/r/uE3cC4/33

答案 2 :(得分:1)

You can do:

\A([a-z][a-z\d_-]*[a-z\d]|[a-z])\Z

Demo