对不起NOOB因素,但是这两个regi(正则表达式复数lol)的做法有何不同?
http://codepad.viper-7.com/vaQTMh
<?php
$name = 'BartSimpson';
$regex1 = '#^[A-Z]$#i';
$regex2 = '#[A-Z]#i';
if (preg_match($regex1, $name)) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
if (preg_match($regex2, $name)) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
?>
答案 0 :(得分:4)
正如您所指出的,第一个具有字符串锚点的开始/结束。因此,只有在您提供的字符串中包含 [A-Z]
范围内的一个字符时才会匹配。
第二个没有锚点,匹配一个字符串,该字符串在[A-Z]
范围内包含至少一个字符,在其内容的任何位置。
请花点时间阅读正则表达式(例如http://www.regular-expressions.info/)。这是非常基本的。
答案 1 :(得分:0)
$name = 'BartSimpson';
但是如果字符串类似于“1BartSimpson”,则regex1将不匹配,因为它期望从字符串的开头到结尾的[A-Z]。 “^”表示字符串的开头,“$”表示字符串的结尾。
编辑:此答案(在此编辑之上)不正确。我错过了“^ [A-Z] + $”中需要一个“+”来匹配“BartSimpson”。感谢您的更正。
答案 2 :(得分:0)
(?i)^[A-Z]$
:行或字符串的开头,字符[A-Za-z],行尾或字符串(?i)[A-Z]
:字符[A-Za-z] 因此,第一个正则表达式不应与BartSimpson
匹配,而第二个正则表达式必须匹配。
答案 3 :(得分:0)
首先,确保您的字符串在整个字符串中仅包含 一个A
到Z
。
第二个,将检查您的字符串是否至少 A
到Z
个字母之一。