我正在使用Javascript来验证我的表单字段,以下正则表达式无效。我使用错误的方法来匹配吗?
var name=document.getElementById('first_name').value;
if (!name.match(/^[A-Za-z]*$/))
{
document.getElementById('error').innerHTML = "Please match the regxp";
document.getElementById('first_name').focus();
return false;
}
我正在表单提交上执行上述代码。
答案 0 :(得分:0)
*
重复运算符匹配零或更多次出现,因此正则表达式^[A-Za-z]*$
将匹配零次或多次出现的字母,即它将匹配空字符串以及只包含字母的字符串。
您可能打算使用+
重复运算符来匹配1个或更多^[A-Za-z]+$
答案 1 :(得分:0)
试试这个。使用Regex可以做到这一点。
function validateName(x){
var name=document.getElementById('first_name').value;
var pattern = new RegExp('/^\w+$/');
if(!pattern.test(name)){
alert("Use only A-Z, a-z, 0-9, or _ in names.");
return false;
}
}
答案 2 :(得分:0)
我不确定您发布的代码中是否存在问题,是否正确绑定到事件处理程序?
它适用于jsfiddle http://jsfiddle.net/dD6y3/
刚刚添加了模糊绑定,也许这就是你缺少的东西?或者有什么问题?很难说没有看到更多的代码。
$('#first_name').on("blur", function() {
var name = document.getElementById('first_name').value;
if (!name.match(/^[A-Za-z]*$/)) {
document.getElementById('error').innerHTML="Please match the regxp";
document.getElementById('first_name').focus();
return false;
}
});
答案 3 :(得分:0)
您的正则表达式似乎没问题,您是否已将事件附加到输入? 您应该添加事件以检查它是否正确:http://www.w3schools.com/js/js_htmldom_events.asp
这是我的解决方案,它会在您取消选择输入时检查错误,当您更改为其他输入时:
<强> HTML 强>
<div id='error'></div>
<input id='first_name' onchange="checkChanges()"/>
虽然这样可行,但您应该使用事件处理程序或jQuery等framerowk,以确保它可以在所有可能的浏览器上运行
<强> JS 强>
function checkChanges() {
var name = document.getElementById('first_name').value;
if (!name.match(/^[A-Za-z]*$/))
{
document.getElementById('error').innerHTML="Please match the regxp";
document.getElementById('first_name').focus();
return false;
} else {
document.getElementById('error').innerHTML="OK";
}
}
答案 4 :(得分:0)
假设您希望您的名字以字母开头,而您不使用jQuery ......
var errors = document.getElementById('error');
var firstName = document.getElementById('first_name');
function validate(element) {
var name = element.value;
if (name.match(/^[A-Za-z]+$/)) {
return true;
}
errors.innerHTML = "Name must begin with a letter";
element.focus();
return false;
}
validate(firstName); // needs moving to a submit event handler or similar
答案 5 :(得分:0)
我已经解决了......
为了匹配正则表达式,我使用了以下方法......
var pattern=/^[A-Za-z0-9]+$/;
if (!pattern.test(document.getElementById('first_name').value))
{
document.getElementById('error').innerHTML = "only the characters and 0-9 are allowed";
document.getElementById('first_name').focus();
return false;
}
顺便说一下,谢谢你的所有回复