想要通过任何字母数字和下划线、破折号和句点

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 可视化正则表达式:

【讨论】:

以上是关于想要通过任何字母数字和下划线、破折号和句点的主要内容,如果未能解决你的问题,请参考以下文章

带有特殊字符破折号 (-) 和下划线 (_) 的 Javascript 自定义排序

kafka学习

为用户名编写正则表达式

Juniper防火墙Policy命名规则

java基础-变量

Groovy:RegEx用于匹配字母数字和下划线和短划线