正则表达式 - 单字符子句的字符串开始和字符串锚定结束

时间:2011-07-16 10:55:15

标签: php regex

对不起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.";
    }

    ?>

4 个答案:

答案 0 :(得分:4)

正如您所指出的,第一个具有字符串锚点的开始/结束。因此,只有在您提供的字符串中包含 [A-Z]范围内的一个字符时才会匹配。

第二个没有锚点,匹配一个字符串,该字符串在[A-Z]范围内包含至少一个字符,在其内容的任何位置。

请花点时间阅读正则表达式(例如http://www.regular-expressions.info/)。这是非常基本的。

答案 1 :(得分:0)

$name = 'BartSimpson';

的情况都是一样的

但是如果字符串类似于“1BartSimpson”,则regex1将不匹配,因为它期望从字符串的开头到结尾的[A-Z]。 “^”表示字符串的开头,“$”表示字符串的结尾。

编辑:此答案(在此编辑之上)不正确。我错过了“^ [A-Z] + $”中需要一个“+”来匹配“BartSimpson”。感谢您的更正。

答案 2 :(得分:0)

  1. (?i)^[A-Z]$:行或字符串的开头,字符[A-Za-z],行尾或字符串
  2. (?i)[A-Z]:字符[A-Za-z]
  3. 因此,第一个正则表达式不应与BartSimpson匹配,而第二个正则表达式必须匹配。

答案 3 :(得分:0)

首先,确保您的字符串在整个字符串中仅包含 一个AZ

第二个,将检查您的字符串是否至少 AZ个字母之一。