用于字母和空格的.NET RegEx

时间:2010-06-01 15:21:25

标签: c# .net regex

我正在尝试在C#中创建一个只允许使用字母数字字符和空格的正则表达式。目前,我正在尝试以下方法:

string pattern = @"^\w+$";
Regex regex = new Regex(pattern);
if (regex.IsMatch(value) == false)
{
  // Display error
}

我做错了什么?

5 个答案:

答案 0 :(得分:21)

如果您只需要英语,请尝试使用此正则表达式:

"^[0-9A-Za-z ]+$"

括号指定一组字符

0-9:所有数字

A-Z:所有大写字母

a-z:所有小写字母

' ':空格

如果您需要unicode / internationalization,可以尝试使用此正则表达式:

"^[\\w ]+$"

这个正则表达式将匹配所有unicode字母,数字和空格,这可能比你需要的多,所以如果你只需要英文或基本的罗马字符,第一个正则表达式将更简单,更快速执行。

请注意,对于这两个正则表达式,我都包含了^$运算符,它们在开头和结尾都是匹配的。如果您需要将其从字符串中拉出来并且不需要是整个字符串,则可以删除这两个操作符。

答案 1 :(得分:6)

尝试使用空格的所有字母:

@"[\p{L} ]+$"

答案 2 :(得分:4)

字符类\w与空格不匹配。尝试将其替换为[\w ]\w后面有一个空格以匹配单词字符和空格。如果要匹配任何空格,也可以用\s替换空格。

答案 3 :(得分:4)

如果除了0-9,az和AZ之外,你还需要覆盖任何重音字母,如ï,é,æ,Ć或Ş,那么你最好使用Unicode属性\p{...}进行匹配,即(注意空格):

string pattern = @"^[\p{IsLetter}\p{IsDigit} ]+$";

答案 4 :(得分:0)

这个正则表达式对我很有用。

           Regex rgx = new Regex("[^a-zA-Z0-9_ ]+");
            if (rgx.IsMatch(yourstring))
            {
                var err = "Special charactes are not allowed in Tags";
            }