[英]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.