正则表达式在破折号之前
本文关键字:破折号 正则表达式 | 更新日期: 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_]-
否定前瞻断言中的部分可确保-
前后没有非单词字符或_
符号。