[英]How can I find a single occurrence of a non-latin character using regular expressions?
我使用正則表達式查看字符串中是否有單個非拉丁字符。
$latin_check = '/[\x{0030}-\x{007f}]/u'; //This is looking for only latin characters
if(preg_match($latin_check, $_POST['full_name'])) {
$error = true;
}
應該檢查是否存在至少一個不是拉丁字符的字符。 如果找不到至少一個非拉丁字符,則應將$ error設置為true。
我認為我的邏輯可能是錯誤的。 如何使用php中的正則表達式查找非拉丁字符的單個出現?
您的正則表達式(據我所知)將匹配十六進制代碼\\ x0030和\\ x007f之間的任何字符,這與您想要的相反。 如果您要查找不在該范圍內的字符(即-非拉丁字符),我想您想使用一個否定的字符類:
$latin_check = '/[^\x{0030}-\x{007f}]/u';
正則表達式字符類中的'^'元字符基本上表示“不在此字符類中的任何字符”。
以下應該工作:
if (preg_match('/[^\x30-\x7F]/', $_POST['full_name']) > 0)
{
$error = true;
}
如果要接受空格和以下ASCII符號,則可能希望使用x20
而不是x30
作為下邊界: !"#$%&'()*+,-./
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.