0

嗨,我的 Rails 应用程序上有一个搜索框,目前我有这个:

var searchReg = /^([a-zA-Z0-9]{0,16})$/; 

除了我无法搜索电子邮件条目之外,这对所有事情都很好。一旦盒子里至少有 2 个字符,我就尝试过到处寻找,甚至根本接受任何字符。我试过+@随意放置,但老实说我不知道​​我在做什么。有人可以帮助我吗?

评论中的代码:

jQuery(function(){
    $("input[value='Search']" ).click(function(){
        $(".error").hide();
        var hasError = false;
        var searchReg = /^([a-zA-Z0-9]{0,16})$/;
        var searchVal = $("#q").val();
        if(searchVal == '') {
            $("#q").after('<span class="error">Please enter a search term.</span>');
            hasError = true;
        } else if(!searchReg.test(searchVal)) {
            $("q").after('<span class="error">Enter valid text.</span>');
            hasError = true;
        }
        if(hasError == true) {return false;}
    }); 
}); 
4

1 回答 1

2

您可以简单地将每个符号添加到字符类中,确保转义那些具有特殊意义的符号:

var searchReg = /^([a-zA-Z0-9@\-_\.]{0,16})$/; 

找出正则表达式的强大工具是:http ://regex101.com/

PS:如果你在那里输入你的正则表达式,你会注意到你有一个可能不必要的捕获组。

于 2013-10-17T09:56:56.390 回答