用于字母和空格的.NET RegEx

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

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

我究竟做错了什么?

如果你只需要英语,试试这个正则表达式:

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

括号指定一组字符

0-9 :所有数字

AZ :所有大写字母

az :全部小写字母

' ' :太空

如果您需要unicode / internationalization,可以试试这个正则表达式:

 "^[\\w ]+$" 

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

请注意,对于这两个正则表达式,我已经包含了^$运算符,这意味着在开始和结束时匹配。 如果您需要将其从字符串中拉出来并且不需要是整个字符串,则可以删除这两个运算符。

试试这个带空格的所有字母:

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

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

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

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

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

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