0

テキストエリアに入力された文字を検証しているjspページがあります。次の文をテキストエリアに貼り付けました。

例外 (第 2 節 pg.)。

次に、テキストエリアに入力された文字を検証するボタンをクリックしました。IE が 5 分間ハングした後、目的のアラートが表示されます。ただし、テキストエリアに同じことを入力すると、すぐにアラートが表示されます。コードは Firefox で正常に動作しています。

このコードは.jsファイルにあります

function SpecialCharacter(obj){

    if(Trim(obj.value) != "")
    {
        var objRegExp  = new RegExp("^[a-zA-Z0-9- \b]+([-:,.&=/a-zA-Z0-9 \b]+)*$");
        var errMsg = "Please enter alpha numeric and following special characters(:,.&=/) only.";
        if (! obj.value.match(objRegExp))
        {
            alert(errMsg);
            obj.focus();
            return false;
        }
    }
    return true;
}

JSPページ

<textarea rows="5" cols="100" class="clsMultiLineTextBox" name="XYZ" id="XYZ" ></textarea> 

<input type="button" class="button" onclick="doSubmit();return false;" id="btnPostQuery" value="Post Query">
function doSubmit(){
    if(Trim(document.forms[0].XYZ.value).length <= 0 ){
        alert("ABC cannot be empty.");
        return false;
    }else if( Trim(document.forms[0].XYZ.value).length >500){
        alert("Query allows you to enter max 500 characters.");
        return false;
    }else if( !SpecialCharacter(document.forms[0].XYZ)){
        return false;
    }else{
        document.forms[0].hidMode.value="post_query";
        document.forms[0].submit();
        return true;
    }
}

どうしてこうなったのかアドバイスお願いします。
ありがとう、
ガウラフ・チャウダリー

4

1 に答える 1

0

これはおそらく、正規表現がループに入るためです。エラーが発生した場合により速く終了する、より単純な正規表現を見つけてみてください。

*?最初に正規表現の一部 (ヘッダー) を照合することにより、テキストを細かく調べたり検証したりします。ヘッダーがない場合 → エラー。

次に、ヘッダーを削除します。入力の残りを検索して、許可された文字の逆数 ( [^...allowed chars...]. どこかに一致する場合 -> エラー

于 2013-06-19T10:13:18.950 に答える