2015-07-19 74 views
1

我在我的服务器上这样做了,它似乎只检查条目的第一个字符。 然后,我试图把它放在jsFiddle的例子和测试它,但我不知道如何让jsFiddle工作,因为那里似乎没有任何反应。 https://jsfiddle.net/bw906rLt/我打破了jQuery正则表达式?

我已经尝试了许多例子在香港专业教育学院发现的计算器,但每次它只是测试的第一个字母

<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 = /^([[email protected]])/; 
    return regex.test(em); 
} 

这是我做的一个简单的例子,但它不工作。 我的服务器上回应有效期为“A”,无效的“(”尚未生效的“一(”。

我已经阅读正则表达式的几件事情,但我在想念这里somwhere

完全挡板我

+0

'up'没有在https://jsfiddle.net/bw906rLt/定义? – guest271314

+1

就像一个邪恶的提醒http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx/ –

回答

1

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

var regex = /^[[email protected]]+$/; 

var regex = /^[\[email protected]]+$/; 

在我的服务器上,它对'a'有效,对'('无效但对'a(')有效。为什么?

^([[email protected]])正则表达式在开始时匹配一个字符,它必须是a-z或A-Z或0-9或_或@。所以a得到匹配,(不会得到匹配,因为(不存在于char类中。以上正则表达式匹配a(,因为char类中的a-z与起始a匹配,所以它返回true。

+1

看到你第一个评论和改变它,它的工作,谢谢你,并会打勾,然后看到你的解释,再次感谢你 – nathan

1

出现onKeyUp处理器在

onKeyUp="up(this);

设置为up虽然up不会出现定义?

尝试内testEmailhtml设定事件处理程序el.keyup(),主叫testEmail作为处理程序.keyup()eventel,其中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 = /^([[email protected]])/; 
    return regex.test(em); 
} 

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

}); 

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

0

感谢您的帮助,取得了一个简单的功能再次得到了什么我现在想的,谢谢。

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

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