gpt4 book ai didi

c# - 正则表达式误解

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:41 26 4
gpt4 key购买 nike

我正在尝试使用正则表达式来检查字母,所以我使用了下面的方法。问题是如果我在字母之前或之后有一个数字,该数字将被忽略并且什么也不会发生,这不是我想要做的。我试图只检查字母,所以如果我有任何其他字母,则会弹出一条错误消息。如果我只有字母它工作正常,如果我只有数字它也工作正常,问题是如果我有一个字母和一个数字它不能正常工作,除此之外一切正常。

Regex _regex = new Regex("[A-Z]");
Match Instruction_match = _regex.Match(Instruction_Seperator[1]);

if (!Instruction_match.Success) // "A," or "B," or "C,"...etc.
{
Messagebox.show("Error, Please letters only");
}

请注意,Instruction_Seperator[1] 是通过文本框从用户那里获取的,用户必须只在字母之前或之后输入任何字母。你知道为什么当我输入字母和数字时消息框没有弹出吗?

期待您的回复:)

我可以有一个特定的大小,如果用户超过弹出错误,例如,如果只允许用户输入 3 个拉丁字母而没有其他内容,正则表达式中是否有长度限制:)

最佳答案

该模式将匹配任何包含大写拉丁字母的字符串;如果它碰巧包含任何其他字符,它们将被忽略。如果您想要在字符串包含 only 大写拉丁字母时匹配的模式,您需要使用开始 (^) 和结束 ( $) anchor ,以及一个或多个量词 (+) 在您的字符类之后,如下所示:

^[A-Z]+$

最后你的代码应该是这样的:

Regex _regex = new Regex("^[A-Z]+$");
Match Instruction_match = _regex.Match(Instruction_Seperator[1]);

if (!Instruction_match.Success) // "A," or "B," or "C,"...etc.
{
Messagebox.show("Error, Please letters only");
}

考虑到您的问题的更新和您所做的一些其他评论,您可能需要使用以下更多模式:

  • ^[A-Z]{3}$ - 此模式将恰好匹配三个大写拉丁字符
  • ^[A-Z]{1,3}$ - 此模式将匹配一个、两个或三个大写拉丁字符
  • ^[A-Z]([A-Z]{2})?$ - 此模式将匹配一个或三个大写拉丁字符

关于c# - 正则表达式误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17111874/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com