C# 正则表达式先于破折号
我想编写一个正则表达式模式,该模式需要检查以下内容: 每个破折号(-)字符的前面和后面必须紧跟一个字母或数字;不允许使用连续破折号C# 正则表达式先于破折号,c#,regex,character,C#,Regex,Character,我想编写一个正则表达式模式,该模式需要检查以下内容: 每个破折号(-)字符的前面和后面必须紧跟一个字母或数字;不允许使用连续破折号 如何做到这一点?您可以使用下面的简单正则表达式,它使用负前瞻断言 ^(?!-|.*-$|.*-[\W_]|.*[\W_]-).*$ 负前瞻断言中的*-[\W\u]-部分确保-前面或后面没有非单词字符或符号 ^(?!(?:.*-(?=$|-))|-).*$ 试试这个。看演示 这使用了负前瞻来确保-后面没有-或$,并且不是以-开头。我们只知道每个破折号都应该用字
如何做到这一点?您可以使用下面的简单正则表达式,它使用负前瞻断言
^(?!-|.*-$|.*-[\W_]|.*[\W_]-).*$
负前瞻断言中的*-[\W\u]-
部分确保-
前面或后面没有非单词字符或
符号
^(?!(?:.*-(?=$|-))|-).*$
试试这个。看演示
这使用了
负前瞻
来确保-
后面没有-
或$
,并且不是以-
开头。我们只知道每个破折号都应该用字母或数字包围,但我们不知道整个字符串是否仅限于字母、数字和破折号。此外,如果字符串必须包含破折号,则未指定
假设@#$abc def#%
是一个有效字符串,我们需要使用以下内容:
@"^[^-]+?(?:(?<=[\da-z])-(?=[\da-z])[^-]+?)*$"
提供一些有效和无效匹配的示例。此示例成功验证了
@-#
,这显然不是有效的输入。@AlexSkalozub这是一个简单的修复方法。您可以用任何需要的内容替换*
。但OP没有指定任何内容
@"^[\da-z]+(?:-[\da-z]+)*$"