溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

中文的簡單正則匹配

發(fā)布時(shí)間:2020-07-24 05:01:09 來源:網(wǎng)絡(luò) 閱讀:1678 作者:bieru 欄目:開發(fā)技術(shù)

在PHP中使用正則匹配中文,很多時(shí)候會(huì)出現(xiàn)問題,在不同的編碼情況下,正則表達(dá)式不太一樣,所以希望大家注意,在使用正則匹配中文的時(shí)候,多多注意編碼問題。


在JS下能夠使用的在PHP中不一定可以使用,比如:/^[a-zA-Z0-9\_\.\_\(yùn).\u4E00-\u9FA5\uF900-\uFA2D]+$/;


如果在PHP中使用 :\u4E00-\u9FA5\uF900-\uFA2D  來匹配,那么會(huì)在運(yùn)行PHP腳本的時(shí)候出現(xiàn)錯(cuò)誤,


Warning: preg_match(): Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 6


那是因?yàn)椋?span >PHP正則表達(dá)式中不支持下列 Perl 轉(zhuǎn)義序列:\L, \l, \N, \P, \p, \U, \u, or \X 


但是在在 UTF-8 模式下,允許用“\x{...}”,花括號(hào)中的內(nèi)容是表示十六進(jìn)制數(shù)字的字符串,一下給出了一個(gè)簡單的中文匹配示例:


        //匹配中文、英文字符、數(shù)字、特殊符號(hào)全角除外
	$str  = 'adf^^**^k2)(*&3423sfdgsdf#$%^423jkalk阿拉丁解放路dsfj';
	$rule = "/([\x80-\xff]{1,})/";
	echo "<pre>";
	preg_match_all("/([?=[\x21-\x7e]{1,}|[A-Za-z0-9]{1,}|[\x{4e00}-\x{9fa5}]{1,})/u", $str, $m);
	var_dump($m);

	//支持特殊符號(hào)(半角)
	$rule = "/((?=[\x21-\x7e])[^A-Za-z0-9]){1,}/u";
	preg_match($rule, $str, $m);
	var_dump($m);

	//匹配中文····
	$str = "erwerwe.·中文·匹配·324#¥%……";
	$rule = "/([\x{4e00}-\x{9fa5}\·]{1,})/ius";
	preg_match($rule, $str, $m);
	var_dump($m);

	//匹配郵件
	$email ="qwerty234234@234567_#$%@yahoo.cn";
	//$email = "bieru52@aliyun.com";
	$rule = "/(^[a-zA-Z0-9][a-zA-Z0-9\.\_\-]{1,30}@[a-zA-Z0-9_-]{1,10}(\.[a-zA-Z0-9_-]{1,10}){0,4})\.[a-zA-Z]{1,10}$/";
	$m = preg_match($rule, $email);
	var_dump($m);


雙字節(jié)字符編碼范圍 

GBK (GB2312/GB18030) 
x00-xff GBK雙字節(jié)編碼范圍 
x20-x7f ASCII 
xa1-xff 中文 gb2312 
x80-xff 中文 gbk 

 UTF-8 (Unicode) 

u4e00-u9fa5 (中文) 


參考文檔: 正則表達(dá)式30分鐘入門教程 


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI