正则表达式在破折号之前

本文关键字:破折号 正则表达式 | 更新日期: 2023-09-27 18:33:43

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

每个短划线 (-) 字符的前后必须紧跟一个字母或数字;不允许使用连续的短划线。

怎么做?

正则表达式在破折号之前

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

试试这个。请参阅演示。

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

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

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

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

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

演示

如果只允许字母、数字和破折号,那就更简单了:

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

演示

您可以使用

以下简单的正则表达式,它使用负的前瞻断言。

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

演示

.*-['W_]|.*['W_]-否定前瞻断言中的部分可确保-前后没有非单词字符或_符号。