php と js で中国語の文字を照合したい場合は、通常の /^[\x{4e00}-\x{9fa5}]+$/u を使用するだけで、2 バイト文字 (中国語の文字を含む) と照合できます。 : [^/ x00-/xff]、詳細は以下の通りです
jsバージョン
漢字に一致する正規表現: [/u4e00-/u9fa5]
全角文字(漢字を含む)の一致: [^/x00-/xff]
コードは次のとおりです |
コードをコピー |
var reg = /^[u4e00-u9fa5]+$/;
if(reg.test(str))
{
alert('漢字を扱う');
}
文字列の長さを計算します(全角文字の長さを2、ASCII文字の長さを1として数えます)
String.prototype.len=function(){return this.replace([^/x00-/xff]/g,"aa").length;}
|
phpバージョン
php の通常の中国語文字の一致
/^[x{4e00}-x{9fa5}]+$/u
コードは次のとおりです |
コードをコピー |
$action = トリム($_GET['action']);
if($action == "サブ")
{
$str = $_POST['dir'];
//if(!preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str)) //GB2312 漢字数字の下線の正規表現
If(!preg_match("/^[x{4e00}-x{9fa5}A-Za-z0-9_]+$/u",$str)) //UTF-8 漢字英数字下線正規表現
{
echo "入力した [".$str."] には不正な文字が含まれています
}
それ以外
{
echo "入力した [".$str."] は完全に正当です。合格しました!";
}
}
|
もちろん、文字列をすべて中国語の文字にしたい場合、GBK2312 エンコード マッチングは次のようになります。
コードは次のとおりです
コードをコピー |
|
$str = "小さな男の子";
if(preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/",$str)){
print($str."確かに全部漢字です");
} その他 {
print($str."これは実際にはすべての漢字ではありません");
}
uft8 エンコーディング通常
$str = "漢字";
if (preg_match("/^[x{4e00}-x{9fa5}]+$/u",$str)) {
print("この文字列はすべて中国語です");
} その他 {
print("この文字列はすべて中国語ではありません");
}
|
実際、各コードの上位ビットと下位ビットの始まりと終わりを理解していれば、正規表現は自然に書くことができ、それは直接16桁です。何が難しいでしょうか?ふふ。ただし、php では、x は 16 桁を示すために使用されることに注意してください。
gbk、gb2312の例:
コードは次のとおりです |
コードをコピー |
$action = トリム($_GET['action']);
if($action == "サブ")
{
$str = $_POST['dir']
//if(!preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str)) //GB2312 漢字数字の下線の正規表現
If(!preg_match("/^[x{4e00}-x{9fa5}A-Za-z0-9_]+$/u",$str)) //UTF-8 漢字英数字下線正規表現
{
echo "入力した [".$str."] には不正な文字が含まれています";
}
その他
{
echo "入力した [".$str."] は完全に合法であり、合格しました!";
}
}
?>
|
+$/u の意味:
+ は 1 回以上繰り返すことを意味します。
$ は末尾に一致することを意味します
/ は区切り文字を表します。
u はパターン文字列が UTF-8 として扱われることを示します。
U は、最初の一致後に検索を停止することを意味します。
2-4を一致させるには、{2, 4}を使用して表現します。
/^[x{4e00}-x{9fa5}]{2,4}$/u
http://www.bkjia.com/PHPjc/631567.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/631567.html技術記事中国語の文字を一致させたい場合は、php および js で通常の /^[\x{4e00}-\x{9fa5}]+$/u を使用するだけで、2 バイト文字 (中国語の文字を含む) を一致させることができます。 [^/x00 -/xff]、詳細は次のとおりです。js バージョンの一致...