想要通过任何字母数字和下划线、破折号和句点
Posted
技术标签:
【中文标题】想要通过任何字母数字和下划线、破折号和句点【英文标题】:Want any alphanumeric and underscore, dash and period to pass 【发布时间】:2010-12-28 18:38:18 【问题描述】:在我的控制器中,我当前设置了一个具有以下正则表达式的约束:
@"\w+"
我还想允许下划线、破折号和句点。
效率越高越好,因为这被称为分配。
有什么建议吗?
【问题讨论】:
一个或多个或没有或多个:破折号、下划线和句点? 【参考方案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 可视化正则表达式:
【讨论】:
以上是关于想要通过任何字母数字和下划线、破折号和句点的主要内容,如果未能解决你的问题,请参考以下文章