1

文字列の最初の 2 文字を特殊文字にしないでください

function detectInvalidChars(limitField)
{
    var len=limitField.value.length;
    var char1=limitField.value.substring(0,1);
    var char2=limitField.value.substring(1,2);

    if(char1=='&'||char1=='<' char1=='!' || char2=='&'||char2=='<'..........so on)
    {
    alert("Invalid character");
    limitField.value = limitField.value.substring(0,len-1);
    }
}

char1andchar2を各特殊文字と一致させる代わりに。私に何ができる?

4

4 に答える 4

1

正規表現を使用できます。

var re = /^([&<!]|.[&<!])/;
if (re.test(limitField.value)) {
    alert...
}
于 2013-01-29T08:13:45.063 に答える
0

文字列メソッド.charCodeAt(n)を調べます

その後、範囲内のASCII値を比較できるはずです。

したがって、たとえば、制御文字を除外する場合は、次のように記述できます。

if (mystring.charCodeAt(0)<32 || mystring.charCodeAt(1)<32) {
    alert("Invalid character");
}

または正規表現を使用します。

この質問が役立つかもしれません: JavaScriptのisalpha置換?

于 2013-01-29T08:12:10.657 に答える
0

元の部分文字列で正規表現を使用できます。

substring は、"from" から "to" までの文字列の一部を取得します。

/^[0-9a-z]+$/ は 0 ... 9 と a ... z のみを許可する正規表現です

function is_part_alnum(value, from, to) 
    substring = value.substring(from, to);
    if(!substring.match(/^[0-9a-z]+$/) {
        alert("Invalid character(s)");
    }
}
于 2013-01-29T08:14:39.053 に答える
0

正規表現を使用せず、独自の特殊文字セットを定義したい場合は、次のような関数を使用できます。

function detectInvalidChars(s, count) {
    var specialChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?~_";
    var firstChars = s.substr(0, count).split('');
    for(var i=0; i<firstChars.length; i++) {
        if(specialChars.indexOf(firstChars[i]) !== -1) {
            // invalid char detected
        }
    }
}

s文字列はどこにありcount、調査する必要がある最初の文字の数です。

于 2013-01-29T08:23:18.287 に答える