Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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# 正则表达式:单个单词_C#_.net_Regex - Fatal编程技术网

C# 正则表达式:单个单词

C# 正则表达式:单个单词,c#,.net,regex,C#,.net,Regex,如果用户输入是一个单词,我想签入一个C#程序。单词my只有A-Z和A-Z两个字符。没有空格或其他字符。 我尝试了[A-Za-z]*,但这不起作用。这个表达有什么不对 Regex regex = new Regex("[A-Za-z]*"); if (!regex.IsMatch(userinput);) { ... } 你能推荐一个包含正则表达式示例的综合列表吗 我不知道C#的regex语法是什么,但是试试[A-Za-z]+你应该为字符串的开头和结尾添加锚定:^[A-Za-z]+$关于re

如果用户输入是一个单词,我想签入一个C#程序。单词my只有A-Z和A-Z两个字符。没有空格或其他字符。 我尝试了
[A-Za-z]*
,但这不起作用。这个表达有什么不对

Regex regex = new Regex("[A-Za-z]*");
if (!regex.IsMatch(userinput);)
{
  ...
}

你能推荐一个包含正则表达式示例的综合列表吗

我不知道C#的regex语法是什么,但是试试
[A-Za-z]+
你应该为字符串的开头和结尾添加锚定:
^[A-Za-z]+$
关于regex示例的问题,请看一看


对于正则表达式,请查看表示字符串开头和结尾的特殊字符
^
$
。在将来构造正则表达式时,它可能会派上用场。

它可能会工作,但您没有锚定正则表达式。您需要分别使用
^
$
将表达式锚定到字符串的开头和结尾:

Regex regex = new Regex("^[A-Za-z]+$");

我还将
*
更改为
+
,因为
*
将匹配0次或更多次,而
+
将匹配1次或更多次。

正则表达式中的星号字符指定“前面的字符类为零或更多”

这解释了表达式失败的原因,因为如果字符串包含零个或多个字母,则表达式将成功

您可能打算使用一个或多个字母,在这种情况下,您应该使用加号而不是星号

进行了更改后,如果您输入的字符串不包含任何字母(如您所希望的),那么它将失败

但是,这仍然不能完全适用于您,因为它将允许字符串中包含其他字符。如果要将其仅限于字母,而不限于其他内容,则需要在正则表达式中提供起始和结束锚点(
^
$
),以使表达式检查“一个或多个字母”是否附加到字符串的起始和结束

^[a-zA-Z]+$
这应该按预期工作

希望有帮助


关于regex的更多信息,我推荐它作为一个很好的参考站点。

尝试
^[a-Za-z]+$
如果你没有包含
^$
,它将匹配字符串中包含字母字符的任何部分。

其他人已经写了如何解决你知道的问题。现在我来谈谈你可能不知道的问题:变音符号:-)你的解决方案不支持èèèù和许多其他字母。正确的解决办法是:

^(\p{L}\p{M}*)+$

其中,
\p{L}
是任何字母加上
\p{M}*
,即0个或多个变音符号(在unicode中,变音符号可以与基本字母“分离”,因此可以有类似于
a+`=a
的内容,也可以有类似标准
a
的预合成字符)

如果您只需要字符
a-zA-Z
,只需对字符进行迭代,然后比较单个字符(如果它们在您的范围内)

例如:
对于每个字符c:
('a'我知道问题只是关于严格的字母输入,但这里有一个有趣的解决方法,它不会打断重音字母和其他此类特殊字符

正则表达式“^\b.+?\b”将匹配字符串开头的第一个单词,但仅当字符串实际以有效的单词字符开头时才匹配。使用该正则表达式,您只需检查a)字符串是否匹配,以及b)匹配字符串的长度是否等于整个字符串的长度:

public Boolean IsSingleWord(String userInput)
{
    Regex firstWordRegex = new Regex("^\\b.+?\\b");
    Match firstWordMatch = firstWordRegex.Match(userInput);
    return firstWordMatch.Success && firstWordMatch.Length == userInput.Length;
}

请记住,您正在删除èèèù…什么是考虑到国际字符的
[a-Za-z]
的好替代品?另一方面,我认为我应该使表达式不区分大小写,而不是在这种情况下重复字符范围。@Svish我发布的答案应该处理这种情况。