代码之家  ›  专栏  ›  技术社区  ›  Harsha M V

正则表达式以匹配以

  •  4
  • Harsha M V  · 技术社区  · 14 年前

    我想从这根绳子上找到一根火柴

    "Dial [Toll Free 1800 102 8880 ext: 246] to connect to the restaurant.  <a class='tooltip' title='Foodiebay has now introduced value added calling features through the website. You just need to dial this number and we ..."
    

    我想检查变量是否以字符串开头 拨号

    $a = 'Dial [Toll Free 1800 102 8880 ext: 246] to connect to the restaurant.  <a class='tooltip' title='Foodiebay has now introduced value added calling features through the website. You just need to dial this number and we';
    
    preg_match('/[^Dial]/', $a, $matches);
    
    2 回复  |  直到 9 年前
        1
  •  8
  •   Marcelo Cantos    14 年前

    去掉方括号:

    /^Dial /
    

    这与字符串匹配 "Dial " 在一行的开头。

    仅供参考:您的原始regex是一个反向字符类 [^...] ,它匹配任何不在类中的字符。在这种情况下,它将匹配任何不是“D”、“i”、“a”或“l”的字符。因为几乎每一行都至少有一个不是这样的字符,所以几乎每一行都会匹配。

        2
  •  5
  •   Vincent Savard Midhun    14 年前

    我宁愿使用strpos而不是regexp:

    if (strpos($a, 'Dial') === 0) {
        // ...
    

    === 很重要,因为它也可能返回false。 (false == 0) 是真的,但是 (false === 0) 是假的。

    编辑:经过OP字符串的测试(一百万次迭代),strpos比substr快30%,比preg_match快50%。