簡體   English   中英

使用正則表達式確定字符串是否全部大寫

[英]Determine if string is all caps with regular expression

如何使用正則表達式確定字符串是否全部大寫。 它可以包含標點符號和數字,但不能包含小寫字母。

m/^[^a-z]*$/

對於非英文字符,

m/^\P{Ll}*$/

\\P{Ll}[^\\p{Ll}] ,它接受除標記為小寫的字符之外的所有字符。)

這聽起來像你想要的: ^[^az]*$

為什么不直接使用 if(string.toUpperCase() == string)? ._. 它更“優雅”...
我認為您正在嘗試強制使用 RegExp,但正如其他人所說,我認為這不是 regexp 的最佳用法......

如果表達式/[az]/返回 true,則字符串包含一個小寫字母,因此只需執行此檢查,如果它為 false,則您沒有小寫字母。

最簡單的似乎是:

^[^a-z]*$
$str="ABCcDEF";
if ( preg_match ("/[a-z]/",$str ) ){
    echo "Lowercase found\n";
}

如果您想在確保沒有小寫字母后將字符串與另一個正則表達式匹配,您可以使用正向前瞻。

^(?=[^a-z]*$)MORE_REGEX$

例如,要確保第一個和最后一個字符是字母數字:

^(?=[^a-z]*$)[A-Z0-9].*[A-Z0-9]$

基本的:

^[^az]*$

排除空行:

^[^az]+$

迎合排除非英文字符(例如排除包含 à 的字符串,例如 'VOILà'):

^\\P{Ll}*$


表達式(例如 JS):

單線:

/^[^az]*$/

多線:

/^[^az]*$/m


理論:

[az]匹配 a,b,c,...z 的字符

[az]*匹配一系列字符 a,b,c,...z

^[az]*匹配一系列不是a,b,c...z 的字符

^[^az]*$匹配只包含從頭到尾不是 a,b,c,...z 的一系列字符的字符串。

^[^az]+$確保至少有一個字符不是 a,b,c,...z,並且其余字符不是 a,b,c,...z 來自開始到結束。

^\\P{Ll}*$匹配 'letter' 組中具有大寫變體的所有 Unicode 字符 - 請參閱https://www.regular-expressions.info/

(s == uppercase(s)) --> 字符串全部大寫怎么樣?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM