簡體   English   中英

如何使用正則表達式查找非拉丁字符的單次出現?

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

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