正则表达式以防止相邻的重复破折号

时间:2011-10-14 04:53:39

标签: regex

在我的asp.net应用程序中,我使用正则表达式限制允许的URL格式。我需要创建正则表达式,不允许在URL中使用相邻的破折号

01)允许像

这样的网址
text1-text2.htm
text1-text2-textn.htm

02)阻止像

这样的URL
text1--text2.htm
text1--text2-textn.htm

5 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

/--/

如果您找到匹配项,则表示该网址有两个破折号。

答案 1 :(得分:1)

url.Contains("--")将适用于您,其中url变量是输入的网址。简洁明了,你不必大惊小怪。

答案 2 :(得分:1)

Aziz发布的否定答案是最好的,但为了完整起见,这里的正则表达式与您希望接受的字符串类型相匹配(而不是拒绝):

您需要一个由零个或多个以下内容组成的字符串:

  • 非破折号字符,或
  • 短划线后跟非破折号

正则表达式是

/^(?:[^-]|-(?!-))*$/

现在你可以调整[^ - ]部分,不仅接受任何字符,而只接受 URL中允许的那些字符(也就是说,如果你想匹配 all可能的网址除了连续两个破折号之外的网址。为此,您必须找到提供URI语法的RFC。会有点单调乏味,这就是为什么/--/与其他支票相结合的否定解决方案是你最好的选择。

答案 3 :(得分:0)

应该足以搜索问题-{2,},然后做出否定。即只要这个正则表达式(连续两个或多个破折号)不匹配,它就是有效的。

正面正则表达式仅匹配您想要的网址:^([A-Za-z0-9]+-?)+\.htm$

答案 4 :(得分:0)

这将匹配一个文件名,其中包含0个或更多个短划线,后跟一些单词字符。

^\w+(-\w+)*\.\w+