仅匹配A或B不区分大小写

时间:2011-07-05 17:27:56

标签: regex

我想要一个正则表达式来验证长度为1的字符串,该字符串在Begin处具有字符AB(不区分大小写)

所以这应该返回true

  A
  a
  B
  b

任何单词都不匹配,因此以下内容将返回false:

 "America"
 "Bi"
 "a door"

5 个答案:

答案 0 :(得分:11)

您可以使用/^[AaBb]$/。这是我所知道的最简单的。

答案 1 :(得分:4)

试试这个正则表达式:^[abAB]$

您也可以使用不区分大小写的选项(在Perl或Javascript中):/^[ab]$/i

答案 2 :(得分:3)

由于您希望匹配固定长度的字符(在您的情况下为1),因此您必须使用^$或使用{{1}在正则表达式上使用Anchoring }和\A。这意味着String的开始和结束(为简单起见)。您可以将正则表达式置于锚点之间以匹配整个字符串。例如:

\Z

现在来匹配字符串中的字符^...REGEX...$ \A...REGEX...\Z A。有很多方法可以实现这一目标。让我们看看其中几个。

使用Character Class/Set使用此功能,您可以在B内放置多个字符,并仅为匹配选择一个字符。所以对于你的情况,正则表达式将如下所示。它表示来自[]AaB的任何字符(这意味着任何情况)。

b

使用Alternating/Pipe这可以帮助您在正则表达式中使用^[AaBb]$ 条件,这意味着匹配多个正则表达式。让我们看一下下面的正则表达式,这里使用管道中的字符。

OR

使用modifier您可以在正则表达式中使用修饰符来匹配大写或小写。在这种情况下,您只能在正则表达式中使用^(A|a|B|b)$ A进行匹配。在这里,我使用B修饰符来忽略这种情况。

(?i)

我想相信会有更多其他方法可以做到这一点。您可以使用Google搜索找到它,或者可以等待来自此网站的其他Sagacious回复!

答案 3 :(得分:2)

您需要在模式中使用^(字符串的开头)和$(字符串的结尾):

/^[AB]$/i

其中i修饰符是不区分大小写的标志,因此您只匹配下一个字符:

  • A
  • 一个
  • B'/ LI>

答案 4 :(得分:0)

这不应该使用正则表达式来完成,因为这不是常规语法;它是star free语法。

严格来说,没有标准的解析器或任何无星形语法的解析器。因此,您应该使用您的语言提供基本的字符串检查。

例如:

bool test_for_ab_i(const std::string& input)
{
    if(input.length() > 1) return false;
    const char& test = input[0];

    if(test == 'a' || test == 'b' || test == 'A' || test == 'B') return true;
    return true;
}

这几乎肯定比最优化的DFA或NFA更有效;但是,如果您还需要解析实际的正则表达式,请考虑使用RE2。您会发现它比Perl或PCRE兼容的东西更合适。