正则表达式匹配一定长度的ALL-CAPS单词

Har*_*ldo 6 php regex

我有一个函数可以修复那些坚持让一切都变得更好的顽皮用户的资本化!

我希望只在字符串包含3个或更多大写字母的大写单词时才调用我的函数.

这可以用正则表达式完成吗?

例子:例如:I = false,DEAL = true,Welcome = false

Tim*_*ker 13

if (preg_match('/\b\p{L}*\p{Lu}{3}\p{L}*\b/u', $str)) {
    // Naughty user!
}
Run Code Online (Sandbox Code Playgroud)

将匹配包含至少三个大写字母的任何单词.这个单词是以大写还是小写字母开头并不重要,因此它会匹配,例如iTUNESStackOVERflow完整的单词.

如果您想将自己限制为完全由大写字符组成的单词(三个或更多),请使用

if (preg_match('/\b\p{Lu}{3,}\b/u', $str)) {
    // Naughty user!
}
Run Code Online (Sandbox Code Playgroud)


ale*_*lex 7

if (preg_match('/[A-Z]{3,}|\b[A-Z]\b/', $str)) {
    // Naughty user!
}
Run Code Online (Sandbox Code Playgroud)

我们来看看......

[A-Z] // Character class from A-Z
{3,} // 3 or more quantifier
| // Logical or pipe
\b // Word boundary
[A-Z] // Character class from A-Z
\b // Word boundary
Run Code Online (Sandbox Code Playgroud)

这可能会让人更容易理解:)

如果两个单词边界之间的所有大写和/或一行中有3个大写字母,则匹配.请澄清这是否是您想要的.

更新

您可能要决定什么触发与首都整个单词.例如,这句话会被认为是顽皮的.

我喜欢苹果.

..因为I.也许你希望把量词有太像{2,}.这取决于字符串将包含什么.