簡體   English   中英

正則表達式拒絕非英語字符?

[英]Regex to reject non-english characters?

是否有一個可以捕獲所有非英語字符的簡單正則表達式? 它需要允許使用通用的標點和符號,但不能使用特殊字符,例如俄語,日語等。

尋找在PHP中工作的東西。

由於在您的評論中,您指的是地址,因此它們也可能包含數字。 所以:

preg_replace('/[^[:alpha:][:punct:][:digit:]]/u', utf8_encode($input), '');

應該替換掉您不需要的字符。 但是,如果正確設置了語言環境,則[:alpha:]類將僅起作用。 例如,如果將其設置為de_DE ,則不僅將“ a”至“ z”視為字符,還將“ exotics”視為“ä”,“ö”,“è”等。

另外,由於您不希望使用“俄語,日語等”,因此請注意u修飾符。 輸入必須采用UTF-8編碼,以免破壞輸入並給您錯誤的結果。

這樣的[^ A-Za-z0-9 \\,\\。\\-]嗎?

這個問題似乎可以解決: PHP驗證字符串字符為英國或美國鍵盤字符

使用十六進制代碼 ,例如,這會清除所有非ascii字符以及行尾,並用空格替換它們。 故意將空格( \\x20 )排除在范圍之外,以便用單個空格替換連續運行的空格和/或特殊字符。

$clean = trim(preg_replace('/[^\x21-\x7E]+/', ' ', $input));
if (strlen($str) == strlen(utf8_decode($str))) {

}

暫無
暫無

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

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