[英]Check if string contains only lowercase letters and underscores
我想檢查給定的字符串是否只包含小寫字母和下划線。 它不能包含空格、數字、大寫字母或特殊符號/字符。
my_name_is_John_Doe
= 失敗(無大寫)my_name_is john doe
= 失敗(無空格)my_name_is_john_doe
= 好的i_am_20_years_old
= 失敗(無數字)i'm_cool!
失敗(沒有像這樣的字符:."#$%&/,.等) 一條額外規則:沒有重音/多字節字母,如ä
、 ö
等。
您可以使用preg_match()
或非正則表達式方法來刪除所有列入白名單的字符並檢查是否有剩余字符。
代碼:(演示)
$strings = [
'my_name_is_John_Doe',
'my_name_is john doe',
'my_name_is_john_doe',
'i_am_20_years_old',
"i'm_cool!"
];
foreach ($strings as $string) {
echo json_encode([
$string,
!strlen(ltrim($string, 'a..z_')),
!preg_match('/[a-z_]*[^a-z_]/', $string)
]);
echo "\n\n";
}
Output:
["my_name_is_John_Doe",false,false]
["my_name_is john doe",false,false]
["my_name_is_john_doe",true,true]
["i_am_20_years_old",false,false]
["i'm_cool!",false,false]
在步驟性能方面,這里是每個提供的示例字符串的工作模式表:
細繩 | 匹配 /^[a-z_]+$/ |
不匹配 /[^a-z_]/ |
不匹配 /.*[^a-z_]/ |
不匹配 /[a-z_]*[^a-z_]/ |
---|---|---|---|---|
my_name_is_John_Doe | 13 | 13 | 6個 | 3個 |
我的名字是約翰·多伊 | 12 | 12 | 7 | 3個 |
my_name_is_john_doe | 4個 | 20 | 23 | 40 |
我20歲了 | 7 | 7 | 14 | 3個 |
我很酷! | 3個 | 3個 | 4個 | 3個 |
上表純屬學術提供。 在如此小的輸入字符串上,任何性能提升或損失對於人類最終用戶來說都是無法區分的。 換句話說,此任務不太可能成為您應用程序的性能瓶頸,因此請選擇您理解並可以維護的技術。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.