代码之家  ›  专栏  ›  技术社区  ›  Darryl Hein IrishChieftain

用于确定字符串是否以多个大写字母开头的正则表达式

  •  1
  • Darryl Hein IrishChieftain  · 技术社区  · 15 年前

    `^[A-Z]{2,1000}`
    

    我希望它在以下情况下返回true:

    • 基础知识
    • ABc
    • 美国广播公司
    • 美国广播公司

    • Abc
    • 美国广播公司
    • 美国广播公司

    我有1000个字符,只是因为我知道该值不会超过1000个字符,但我不在乎限制长度。

    8 回复  |  直到 15 年前
        1
  •  7
  •   Paolo Bergantino    15 年前

    离开第二个就行了吗?

    ^[A-Z]{2,}
    

    基本上是说“字符串以2个或更多大写字母开头”

    >>> 'ABC'.match(/^[A-Z]{2,}/);
    ["ABC"]
    >>> 'ABc'.match(/^[A-Z]{2,}/);
    ["AB"]
    >>> 'ABC ABC'.match(/^[A-Z]{2,}/);
    ["ABC"]
    >>> 'ABc Abc'.match(/^[A-Z]{2,}/);
    ["AB"]
    

    然后是它不应该匹配的:

    >>> 'Abc'.match(/^[A-Z]{2,}/);
    null
    >>> 'AbC'.match(/^[A-Z]{2,}/);
    null
    >>> 'Abc Abc'.match(/^[A-Z]{2,}/);
    null
    >>> 'Abc ABc'.match(/^[A-Z]{2,}/);
    null
    

    {2}

        2
  •  3
  •   Alex Reynolds    15 年前

    我跑 ^[A-Z]{2,} 通过 Regex Tester 对于egrep搜索,您的测试用例工作正常。

        3
  •  2
  •   Rob    15 年前

    ^[A-Z][A-Z]

        4
  •  2
  •   Steve Wortham    15 年前

    那么,如果前两个字母是大写字母,您希望它与整行匹配吗?如果是这样的话,这应该可以做到。。。

    ^[A-Z]{2,}.*$
    
        5
  •  2
  •   Amber    15 年前
    php > echo preg_match("/^[A-Z]{2}/", "ABc");
    1
    php > echo preg_match("/^[A-Z]{2}/", "Abc");
    0
    

    /^[A-Z]{2}/ 似乎对我有用。由于您正在进行子字符串匹配,因此无需执行此操作 {2,} {2,1000} .

        6
  •  1
  •   sylvanaar    15 年前

    由于正则表达式可以很好地找到哪一行以2个大写开头,我想您还有另一个问题。

    也许你对案件不感兴趣

    尝试

    (?-i)^[A-Z]{2,}
    

    (?-i)^[A-Z].*$
    
        7
  •  1
  •   ghostdog74    15 年前

    非正则表达式版本

    $str="Abccc";
    $ch = substr($str,0,2);
    if ( $ch == strtoupper($ch) ){
        print "ok";
    }else{
        print "not ok";
    }
    
        8
  •  0
  •   Jassi    10 年前

    总之,这是正则表达式的答案。

    ^[A-Z]{2,} or ^[A-Z][A-Z]+ 
    

    哪个对你来说更容易:)