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

Dar*_*ein 1 regex

我试图确定一个字符串是否在一个字符串的开头连续有超过1个大写字母.我有以下正则表达式,但它不起作用:

`^[A-Z]{2,1000}`
Run Code Online (Sandbox Code Playgroud)

我希望它返回true:

  • ABC
  • ABC
  • ABC ABC
  • ABc Abc

但错误的是:

  • ABC
  • ABC
  • Abc Abc
  • Abc ABc

我有1000只因为我知道值不会超过1000个字符,但我不关心限制长度.

我正在使用PHP,如果它有任何区别.

Pao*_*ino 7

不会离开第二个人吗?

^[A-Z]{2,}
Run Code Online (Sandbox Code Playgroud)

基本上说"字符串以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"]
Run Code Online (Sandbox Code Playgroud)

然后它不应该匹配的:

>>> '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
Run Code Online (Sandbox Code Playgroud)

如果你只想匹配前两个,你就可以做到 {2}