0

我有一个 jsp 页面,我在其中验证在 textarea 中输入的字符。我在textarea中粘贴了以下句子:

例外(第 2 页第 2 条)。

然后我单击了验证在 textarea 中输入的字符的按钮。IE 挂起 5 分钟,然后它给了我想要的警报。但是,如果在 textarea 中键入相同的内容,警报会立即出现。代码在 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 回答