我正在尝试仅对字母表进行表单验证,但这个正则表达式似乎无法正常工作
function check() {
var reg="/^[a-zA-Z]*$/";
var x = document.forms['frm'].name.value;
var y= document.forms['frm'].email.value;
if( x === ""){
alert('Name field cant be empty');
$("#nameone").focus();
return false;
}
else if (!reg.match(x)){
alert('NAME must contain alphabets only');
return false;
}
else if( y === ""){
alert('Email field cant be empty');
$("#emailone").focus();
return false;
}
else {
return true;
}
}
这是我的表格,我添加了详细信息,输入字段
<form class="reg_form" name='frm' method="post" onsubmit='return check();' >
<div class="input-field col-md-4">
<input type="text" placeholder="1. Name" name="name" id='nameone'/>
</div>
<div class="input-field col-md-4">
<input type="text" placeholder="2. Email" name="email" id='emailone' />
</div>
<div class="input-field col-md-4 ">
<input type="text" placeholder="3. phone" name="phone" />
</div>
</form>
答案 0 :(得分:2)
在这种情况下,您的代码无法运行,因为您的正则表达式已设置为该行中的字符串:
var reg="/^[a-zA-Z]*$/";
&#13;
正则表达式被设置为没有引号:
var reg=/^[a-zA-Z]*$/;
&#13;
我建议您使用:
代替方法&#39;匹配&#39;
else if (!reg.test(x)){
&#13;
这更具有性能,并返回一个布尔值。
答案 1 :(得分:1)
而不是......
var reg = "/^[a-zA-Z]*$/"; // produces a **string**
你应该省略周围的引号:
var reg = /^[a-zA-Z]*$/; // produces a **Regex object**
第二种使用javascript内联Regex语法,斜杠用作分隔符。
此外,您可以使用简单的.test()
函数来检查字符串是否符合正则表达式。
演示:
var reg = /^[a-zA-Z]*$/;
console.log(reg.test("ABcd"));
console.log(reg.test("123"));
答案 2 :(得分:0)
你可以使用
string.match("^[a-zA-Z]+$$");
如果字符串只包含字母,则会生效,否则为