如果用户输入是单个单词,我想检查C#程序。我这个词只有字符A-Z和a-z。没有空格或其他字符。
我试试[A-Za-z]*
,但这不起作用。这个表达有什么问题?
Regex regex = new Regex("[A-Za-z]*");
if (!regex.IsMatch(userinput);)
{
...
}
您是否可以使用正则表达式列表来推荐网站?!
答案 0 :(得分:14)
它可能有效,但你没有锚定正则表达式。您需要使用^
和$
将表达式分别锚定到字符串的开头和结尾:
Regex regex = new Regex("^[A-Za-z]+$");
我还将*
更改为+
,因为*
将匹配0次或更多次,而+
将匹配1次或更多次。
答案 1 :(得分:5)
您应该为字符串的开头和结尾添加锚点:^[A-Za-z]+$
答案 2 :(得分:4)
关于正则表达式的问题,请看http://regexlib.com/。
对于正则表达式,请查看特殊字符^
和$
,它们表示字符串的开头和结尾。 This site在将来构建正则表达式时会派上用场。
答案 3 :(得分:2)
正则表达式中的星号字符指定“前面的字符类中的零个或多个”。
这解释了为什么表达式失败,因为如果字符串包含零个或多个字母,它将会成功。
您可能希望拥有一个或多个字母,在这种情况下,您应该使用加号而不是星号。
进行了更改后,如果输入的字符串不包含任何字母,现在就会失败。
然而,这仍然不适合你,因为它将允许字符串中的其他字符。如果您想将其限制为仅字母,而不是其他内容,那么您需要在正则表达式中提供开始和结束锚点(^
和$
)以使其成为表达式检查“一个或多个字母”是否附加到字符串的开头和结尾。
^[a-zA-Z]+$
这应该按预期工作。
希望有所帮助。
有关正则表达式的更多信息,我建议http://www.regular-expressions.info/reference.html作为一个很好的参考站点。
答案 4 :(得分:1)
我不知道C#的正则表达式语法是什么,但请尝试[A-Za-z]+
。
答案 5 :(得分:1)
尝试^[A-Za-z]+$
如果您不包含^$
,它将匹配字符串中包含字母字符的任何部分。
答案 6 :(得分:1)
我知道这个问题只是关于严格的字母输入,但这是一个解决这个问题的有趣方法,它不会破坏重音字母和其他特殊字符。
正则表达式" ^ \ 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;
}
答案 7 :(得分:0)
其他人已经写了如何解决你所知道的问题。现在我将谈谈您可能不知道的问题:变音符号:-)您的解决方案不支持àèéìòù和许多其他字母。一个正确的解决方案是:
^(\p{L}\p{M}*)+$
其中\p{L}
是任何字母加\p{M}*
,其为0或更多变音符号(在unicode变音符号中可以与基本字母“分开”,因此您可以使用a + ` = à
或您可以使用标准à
)
答案 8 :(得分:0)
如果您只需要字符a-zA-Z,您可以简单地遍历字符并比较单个字符(如果它们在您的范围内)
例如: 对于每个字符c:('a'< = c&& c< ='z')|| ('A'< = c&& c< ='Z')
这可以提高你的表现