我打破了jQuery正则表达式吗?

时间:2015-07-19 14:30:21

标签: jquery regex email input

我在我的服务器上执行此操作,它似乎只检查条目的第一个字符。 然后我试着将它放在jsFiddle上以示例并测试它,但我不知道如何让jsFiddle工作,因为那里似乎没有响应。 https://jsfiddle.net/bw906rLt/

我已尝试过很多我在stackoverflow上找到的例子,但每次只测试第一个字母

<input id="email" onKeyUp="testEmail(this);">
<span id="a">answer</span>

function testEmail(el) {
    var em = $(el).val();
    if (validate(em)) {
        $("#a").html("valid");
    } else {
        $("#a").html("invalid");
    }
}

function validate(em) {
    var regex = /^([a-zA-Z0-9_@])/;
    return regex.test(em);
}

这是我正在做的一个简单的例子,但它不起作用。 在我的服务器上,它对'a'的响应有效,对''('但是对'a('。

)有效

我已经阅读了有关正则表达式的一些内容,但我在这里错过了

完全让我困惑

3 个答案:

答案 0 :(得分:1)

重复char类一次或多次,然后添加行锚的结束。

var regex = /^[a-zA-Z0-9_@]+$/;

var regex = /^[\w@]+$/;
  

在我的服务器上,它的回复对“&#39;”无效,(&#39;但有效的&#39; a(&#39;。为什么?

^([a-zA-Z0-9_@])正则表达式在开头匹配单个字符,必须是a-z或A-Z或0-9或_或@。因此a已匹配,(未获得匹配,因为char类中不存在(。正则表达式匹配a(,因为char类中的a-z与起始a匹配,因此返回true。

答案 1 :(得分:1)

onKeyUp处理程序设置为up

onKeyUp="up(this);

虽然up没有出现定义?

尝试用.keyup()代替html设置事件处理程序,调用testEmail作为.keyup()的处理程序,event作为el el 1}} testEmail内,其中eventkeyup事件,event.targetinput元素

HTML

<input id="email"> <span id="a">answer</span>

JS

$(function() {

function testEmail(event) {
    var em = $(event.target).val();
    if (validate(em)) {
        $("#a").html("valid");
    } else {
        $("#a").html("invalid");
    }    
}

function validate(em) {
    var regex = /^([a-zA-Z0-9_@])/;
    return regex.test(em);
}

$("#email").keyup(testEmail);

});

jsfiddle https://jsfiddle.net/bw906rLt/2/

答案 2 :(得分:0)

感谢您的帮助,我已经做了一个简单的功能来获得我想要的东西,再次感谢。

 <input onKeyUp="testEmailChars"><span id="a"></span>

 function testEmailChars(el){
    var email = $(el).val();
    if ( /^[a-zA-Z0-9_@.-]+$/.test(email)==true ){
        $("#a").html("valid");
    } else {
        $("#a").html("not valid");
    }
}