我在我的服务器上执行此操作,它似乎只检查条目的第一个字符。 然后我试着将它放在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('。
)有效我已经阅读了有关正则表达式的一些内容,但我在这里错过了
完全让我困惑
答案 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
内,其中event
为keyup
事件,event.target
为input
元素
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");
}
}