0

ユーザー名を入力する入力ボックスがありますが、無効な文字を入力するとエラーになります。以下のコードは私が使用しているものです。「何か」のセクションに何を入れますか?

    var numbers = new RegExp("SOMETHING");

    $(this).removeClass("active");          

    if(($(this).val() == "") || $(this).val().match(numbers))
    {
        $("#firstNameErrorMsg").html("First name can only contain letters. ");
    }
    else
    {
        $("#firstNameErrorMsg").html("OK");
    }
4

6 に答える 6

2

この正規表現を試してください

[A-Za-z]

これは小文字と大文字のみに一致します

于 2012-10-06T22:53:48.677 に答える
2

これが私がずっと前にそれらを書いたいくつかのパターンです:

patt['name'] = /^[a-z ,-]+$/i;
patt['username'] = /^[A-z0-9_-]+$/i;
patt['email'] = /^[a-z0-9]+(?:[\.-]?[a-z0-9]+)*@[a-z0-9]+([-]?[a-z0-9]+)*[\.-]?[a-z0-9]+([-]?[a-z0-9]+)*([\.-]?[a-z]{2,})*(\.[a-z]{2,5})+$/i;
patt['website'] = /^http(s)?:\/\/(www\.)?[a-z0-9]+([-]?[a-z0-9]+)*[\.-]?[a-z0-9]+([-]?[a-z0-9]+)*([\.-]?[a-z]{2,})*(\.[a-z]{2,5})+$/i;
patt['age'] = /^(?:([1][3-9]|[2-9][0-9]))$/i;
patt['subject'] = /[a-z0-9?!:;'&_\. ,-]+/i;

それらを使用する場合は、次の条件を確認する必要があります。

if(($(this).val() == "") || ! $(this).val().match(patt['name'])){ // in case.
...
}

ただし、望ましくない文字をチェックしたい場合は、username入力のパターンが長くなります。

于 2012-10-06T22:55:16.477 に答える
0

ユーザー入力の検証を探している場合は、文字のみを使用するために、次のようなcharコードを使用することをお勧めします。

  1. 入力タグにkeypressイベントを追加します

  2. 渡されたイベント引数については、文字コードを確認してください(一部のブラウザはkeyCodeを使用し、他のブラウザはどちらを使用します)

    function checkOnKeyDown(event){
    if(event.KeyCode> = 65 && event.keyCode <= 122){//ここではすべてOK-大文字/小文字のみが受け入れられます}else{//間違った}}

これがすべてのkeyCodeから文字へのマッピングのリストです;): http: //www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

于 2012-10-06T22:56:16.520 に答える
0

正規表現について少し読んで、それらを試してみることをお勧めします

単に文字だけを取得するには、次のようにします。

^[a-zA-Z]+$

これにより、開始と終了の間に1..nの小文字と大文字を見つけることができます。Sushanthのバージョンは、入力の一部と一致し、単語を含む入力が1つある限り、ユーザーはスペースや数字などを他の場所で使用できます。

于 2012-10-06T23:03:00.357 に答える
0

これは、あなたがやろうとしていることの完全な実装であるはずです:

var invalid = /[^A-Za-z]+/;

$(this).removeClass("active");          

if($(this).val() == "" || invalid.test($(this).val()))
{
    $("#firstNameErrorMsg").html("First name can only contain letters. ");
}
else
{
    $("#firstNameErrorMsg").html("OK");
}
于 2012-10-06T23:09:06.497 に答える
0

Sushanthはほとんど正しいですが、任意の数の文字に一致する必要があり、最初から最後まで文字のみである必要があるため、次のようにする必要があります

var name = new RegExp('^[A-Za-z]+$');
$(this).removeClass('active');

if($(this).val().match(name)) {
    $('#firstNameErrorMsg').html('OK');
} else {
    $('#firstNameErrorMsg').html('First name can only contain letters.');
}
于 2012-10-06T23:11:34.963 に答える