10

多言語ウェブサイト (中国語と英語) を持っています。

javascript でテキスト フィールド (名前フィールド) を検証するのが好きです。これまでのところ、次のコードがあります。

var chkName = /^[characters]{1,20}$/;

if( chkName.test("[name value goes here]") ){
  alert("validated");
}

問題は、/^[characters]{1,20}$/ が英語の文字のみに一致することです。任意の (Unicode を含む) 文字に一致させることは可能ですか? 以前は次の正規表現を使用していましたが、各文字の間にスペースを入れたくありません。

/^(.+){1,20}$/
4

5 に答える 5

28

Javascript + Unicode 正規表現を調べて、許可する文字の範囲を正確に見つけるためにいくつかの調査を行うことができます。

Unicode の漢字の完全な範囲は?を参照してください。

これらの 2 つと少し追加の調査を読んだ後、次のようなものを完成させるための適切な値を見つけることができるはずです。/^[-'a-z\u4e00-\u9eff]{1,20}$/i

于 2011-06-16T19:31:08.237 に答える
3

Regex Unicode ブロックを見てください。

これを使用して、CJK 名を処理できます。

于 2011-06-16T19:39:10.817 に答える
-1
var chkName = /\s/;

function check(name) {

    document.write("<br />" + name + " is ");

    if (!chkName.test(name)) {
        document.write("okay");
    } else {
        document.write("invalid");
    }

}

check("namevaluegoeshere");

check("name value goes here");

このようにして、名前に空白があるかどうかを確認するだけです。

デモ @ http://jsfiddle.net/roberkules/U3q5W/

于 2011-06-16T19:37:03.273 に答える