RegEx先于破折号

时间:2014-12-10 04:05:54

标签: c# regex character

我想编写一个需要检查以下内容的正则表达式模式:

  

每个短划线( - )字符必须紧跟在字母或数字之后;不允许连续短划线。

怎么做?

3 个答案:

答案 0 :(得分:0)

您可以使用下面使用负前瞻断言的简单正则表达式。

^(?!-|.*-$|.*-[\W_]|.*[\W_]-).*$

DEMO

负向前瞻断言中的

.*-[\W_]|.*[\W_]-部分确保-不在前面,也不在后面跟着非单词字符或_符号。

答案 1 :(得分:0)

^(?!(?:.*-(?=$|-))|-).*$

试试这个。看看演示。

https://regex101.com/r/aZ6zX0/4

这使用negative lookahead来确保--后面没有$,并且不会以-开头。

答案 2 :(得分:0)

我们只知道每个短划线应该用字母或数字包围,但我们不知道整个字符串是否仅限于字母,数字和短划线。此外,还没有指定是否需要字符串来包含破折号。

假设@#$abc-def#%是一个有效的字符串,我们需要使用以下内容:

@"^[^-]+?(?:(?<=[\da-z])-(?=[\da-z])[^-]+?)*$"

DEMO

如果只允许使用字母,数字和短划线,则更简单:

@"^[\da-z]+(?:-[\da-z]+)*$"

DEMO