C#的正则表达式,匹配具有一个或多个单词字符的所有字符串

时间:2011-03-18 08:44:35

标签: c# asp.net regex

解决了

(见评论)


标题说明了一切......

我以为我可以写RE(在Java或论文中做过非常复杂的)。现在我无法编写这个我需要在ASP.NET MVC模型属性中验证用户名的简单方法。我会说"\\.*\\w\\.*"应该根据我找到的资源运作。但它没有......


修改

以下是我的模型代码中的内容:

enter image description here


以下是发生的诽谤:enter image description here

正如您所见,字符串a12不匹配,但它应该......

3 个答案:

答案 0 :(得分:2)

正则表达式上下文中的“Word”表示非空白,因此在这种情况下,您需要new Regex(@"\w"),例如new Regex(@"\w").IsMatch(" 1 ")返回true。

在评论中,您说希望字母匹配,希望new Regex(@"[\p{L}]")new Regex(@"[\p{L}]").IsMatch(" a ")返回true,但new Regex(@"[\p{L}]").IsMatch(" 1 ")返回false。

您可以更具体,将其视为new Regex(@"[\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}]"),其中特别寻找小写,大写,标题,修饰符和其他字母,以防其中一个类别不受欢迎。例如。不要将修饰符字母视为“单词字符”,而是使用新的Regex(@"[\p{Ll}\p{Lu}\p{Lt}\p{Lo}]")

如果正则表达式必须匹配整个表达式,那么.*\p{L}.*之类的表达式就可以了。

如果您需要匹配单词字符(禁止所有其他字符),那么您需要new Regex(@"^[\p{L}]+$"),这意味着:表达式开头,一个或多个字母,结束表达式。< / p>

答案 1 :(得分:1)

怎么样:

(\w)+

它将返回所有单词

答案 2 :(得分:0)

尝试您的RegEx,如下所示:

String data = "drasto";

Regex regex  = new Regex(".*\\w.*");

var coll = regex.Matches(data);

foreach(var match in coll)
{
    Debug.Writeline(match.ToString());
}

这应该适用于您的目的。