【发布时间】:2010-12-28 18:38:18
【问题描述】:
在我的控制器中,我当前设置了一个具有以下正则表达式的约束:
@"\w+"
我还想允许下划线、破折号和句点。
效率越高越好,因为这被称为分配。
有什么建议吗?
【问题讨论】:
-
一个或多个或没有或多个:破折号、下划线和句点?
标签: c# asp.net-mvc regex routes
在我的控制器中,我当前设置了一个具有以下正则表达式的约束:
@"\w+"
我还想允许下划线、破折号和句点。
效率越高越好,因为这被称为分配。
有什么建议吗?
【问题讨论】:
标签: c# asp.net-mvc regex routes
试试这个:
@"[._\w-]+"
【讨论】:
(?:\w|[-_.])+
将匹配一个或多个单词字符或连字符、下划线或句点。它们捆绑在一个非捕获组中。
【讨论】:
以下内容有帮助吗? @"[\w_-.]+"
附:我使用 Rad Software 正则表达式设计器来设计复杂的正则表达式。
【讨论】:
@"[\w_-.]+"
我没有正则表达式大师只是一个猜测,所以验证它是否有效......
【讨论】:
我会使用@"[\w\-._]+" 作为正则表达式,因为破折号可能会被解释为范围分隔符。使用 \w 没有危险,但如果您稍后添加说 @ ,那么让破折号已经逃脱会更安全。
有一些建议已经在页面上显示了_-.,我相信这将被解释为“单词字符”或从“_”到“。”的任何内容。在一个范围内。
【讨论】:
包含所有的模式:[_.-\w]+
您可以在 _ \. 和 - 加上 ? 后缀,以使任何字符可选(无或更多),例如下划线:
[_?\.-\w]+
但请参阅 Skurmedel 的模式以使所有内容都可选。
【讨论】:
我想我们并不想在这里将_ 添加到我们的表达式中,它已经是\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);
}
}
}
如果您希望简化/修改/探索表达式,在regex101.com 的右上角面板中已对此进行了说明。如果您愿意,您还可以在this link 中观看它如何与一些示例输入匹配。
jex.im 可视化正则表达式:
【讨论】: