【问题标题】:Want any alphanumeric and underscore, dash and period to pass想要通过任何字母数字和下划线、破折号和句点
【发布时间】:2010-12-28 18:38:18
【问题描述】:

在我的控制器中,我当前设置了一个具有以下正则表达式的约束:

 @"\w+"

我还想允许下划线、破折号和句点。

效率越高越好,因为这被称为分配。

有什么建议吗?

【问题讨论】:

  • 一个或多个或没有或多个:破折号、下划线和句点?

标签: c# asp.net-mvc regex routes


【解决方案1】:

试试这个:

@"[._\w-]+"

                 

【讨论】:

    【解决方案2】:

    (?:\w|[-_.])+

    将匹配一个或多个单词字符或连字符、下划线或句点。它们捆绑在一个非捕获组中。

    【讨论】:

      【解决方案3】:

      以下内容有帮助吗? @"[\w_-.]+"

      附:我使用 Rad Software 正则表达式设计器来设计复杂的正则表达式。

      【讨论】:

        【解决方案4】:

        @"[\w_-.]+"

        我没有正则表达式大师只是一个猜测,所以验证它是否有效......

        【讨论】:

          【解决方案5】:

          我会使用@"[\w\-._]+" 作为正则表达式,因为破折号可能会被解释为范围分隔符。使用 \w 没有危险,但如果您稍后添加说 @ ,那么让破折号已经逃脱会更安全。

          有一些建议已经在页面上显示了_-.,我相信这将被解释为“单词字符”或从“_”到“。”的任何内容。在一个范围内。

          【讨论】:

            【解决方案6】:

            包含所有的模式:[_.-\w]+

            您可以在 _ \.- 加上 ? 后缀,以使任何字符可选(无或更多),例如下划线:

            [_?\.-\w]+
            

            但请参阅 Skurmedel 的模式以使所有内容都可选。

            【讨论】:

              【解决方案7】:

              我想我们并不想在这里将_ 添加到我们的表达式中,它已经是\w 构造的一部分,它将解释大写、小写、数字和下划线[A-Za-z0-9_],并且

              [\w.-]+
              

              会工作得很好。

              如果您愿意,我们还可以添加开始和结束锚点:

              ^[\w.-]+$
              

              测试

              using System;
              using System.Text.RegularExpressions;
              
              public class Example
              {
                  public static void Main()
                  {
                      string pattern = @"[\w.-]+";
                      string input = @"abcABC__.
              ABCabc_.-
              -_-_-abc.
              ";
                      RegexOptions options = RegexOptions.Multiline;
              
                      foreach (Match m in Regex.Matches(input, pattern, options))
                      {
                          Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
                      }
                  }
              }
              

              C# Demo


              如果您希望简化/修改/探索表达式,在regex101.com 的右上角面板中已对此进行了说明。如果您愿意,您还可以在this link 中观看它如何与一些示例输入匹配。


              正则表达式电路

              jex.im 可视化正则表达式:

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2015-08-13
                • 1970-01-01
                • 2018-11-21
                • 2021-11-11
                • 1970-01-01
                • 2011-08-29
                • 1970-01-01
                相关资源
                最近更新 更多