我想要一个正则表达式来验证长度为1的字符串,该字符串在Begin处具有字符A
或B
(不区分大小写)
所以这应该返回true
A
a
B
b
任何单词都不匹配,因此以下内容将返回false:
"America"
"Bi"
"a door"
答案 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
内放置多个字符,并仅为匹配选择一个字符。所以对于你的情况,正则表达式将如下所示。它表示来自[]
,A
,a
或B
的任何字符(这意味着任何情况)。
b
使用Alternating/Pipe:这可以帮助您在正则表达式中使用^[AaBb]$
条件,这意味着匹配多个正则表达式。让我们看一下下面的正则表达式,这里使用管道中的字符。
OR
使用modifier:您可以在正则表达式中使用修饰符来匹配大写或小写。在这种情况下,您只能在正则表达式中使用^(A|a|B|b)$
和A
进行匹配。在这里,我使用B
修饰符来忽略这种情况。
(?i)
我想相信会有更多其他方法可以做到这一点。您可以使用Google搜索找到它,或者可以等待来自此网站的其他Sagacious回复!
答案 3 :(得分:2)
您需要在模式中使用^
(字符串的开头)和$
(字符串的结尾):
/^[AB]$/i
其中i
修饰符是不区分大小写的标志,因此您只匹配下一个字符:
答案 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兼容的东西更合适。