Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于字母和空格的.NET正则表达式_C#_.net_Regex - Fatal编程技术网

C# 用于字母和空格的.NET正则表达式

C# 用于字母和空格的.NET正则表达式,c#,.net,regex,C#,.net,Regex,我试图用C#创建一个只允许字母数字字符和空格的正则表达式。目前,我正在尝试以下方法: string pattern = @"^\w+$"; Regex regex = new Regex(pattern); if (regex.IsMatch(value) == false) { // Display error } 我做错了什么?如果您只需要英语,请尝试以下正则表达式: “^[0-9A-Za-z]+$” 括号指定了一组字符 0-9:所有数字 A-Z:所有大写字母 a-z:所有小写字母 ”

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

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

我做错了什么?

如果您只需要英语,请尝试以下正则表达式:

“^[0-9A-Za-z]+$”

括号指定了一组字符

0-9
:所有数字

A-Z
:所有大写字母

a-z
:所有小写字母

:空格

如果需要unicode/国际化,可以尝试以下正则表达式:

“^[\\w]+$”

这个正则表达式将匹配所有unicode字母、数字和空格,这可能超出您的需要,因此,如果您只需要英语或基本罗马字符,那么第一个正则表达式将更简单,执行速度更快


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

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

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


请对所有带空格的字母尝试此选项:

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

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

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

实际上,除非您指定
ECMAScript
\w
使用那些Unicode属性和更多:也许我误解了,但是ECMAScript修饰符并不影响Unicode属性的行为。它确实影响
\w
行为。您是对的:
\w
匹配的不仅仅是字母,它也匹配像逗号、冒号、重音这样的标点符号。`\p{isleter}更精确,只匹配字母:是的,我想我们说的是同一件事;-)这一切都取决于OP需要什么。我只是简单地指出,
\w
匹配的比
[0-9a-zA-Z]
更多。它还包括重音字母(除非指定了
ECMAScript
)。根据Michael在我的答案下的评论,我认为这更适合这里:注意
\w
匹配的不仅仅是字母。它还匹配标点符号(破折号、点、逗号等);@Abel:What
\w
匹配的(除了字母和十进制数字)是连接器标点符号。完整的列表是,但您在实践中可能看到的唯一标点符号是
,即ASCII低位或下划线字符(
U+005F
).
\w
也匹配数字。@user:FYI,C#与JavaScript不同,它不支持正则表达式。您实际上是在询问.NET正则表达式。那不是字母,那是ASCII字母。除美国以外的所有地方都要断开。问题发音“.NET RegEx表示字母和空格”,与数字无关,所以这个答案是正确的。这似乎是迄今为止最好的答案(也是少数几个正确的答案之一。其他答案有时与标点或数字匹配)。我只是用一个在线正则表达式测试仪对此进行了测试。添加了
\p{L}
           Regex rgx = new Regex("[^a-zA-Z0-9_ ]+");
            if (rgx.IsMatch(yourstring))
            {
                var err = "Special charactes are not allowed in Tags";
            }