场合
我有一个只需要接受信件的字段。如果提交时display_name
中有数字,则会弹出错误,但如果我输入pat123
,则表示接受,我不想要。
目标
警告用户除了display_name
之外是否输入了字母,因此没有数字和符号。我需要使用什么表达式以及如何将其实现到我的代码中,因此在该字段中只接受字母?
var fieldNum = /^[0-9a]+$/;
var display_name = form.find('input[name="display_name"]').val();
if ((display_name.match(fieldNum))) {
console.log('error');
}

<input name="display_name" type="text"></input>
&#13;
答案 0 :(得分:3)
您可以尝试这样:
<input name="display_name" onkeyup="this.value=this.value.replace(/[^a-zA-Z]/g,'');">
修改强>
$('.myclass').bind('keyup blur',function(){
var x = $(this);
x.val(x.val().replace(/[^a-zA-Z]/g,'') ); }
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="display_name" class="myclass">
答案 1 :(得分:2)
您的代码/逻辑中存在两个错误。
首先,正则表达式 - 为什么/^[0-9a]+$/
? a
?
其次 - 如果正则表达式匹配,则记录错误。该正则表达式只匹配一串只是数字(或a
)。
你想做什么我相信是
var fieldNum = /^[a-z]+$/i;
var display_name = form.find('input[name="display_name"]').val();
if (!(display_name.match(fieldNum))) {
console.log('error');
}
正则表达式已修复,它会检查它是否匹配(!
)。
答案 2 :(得分:0)
也许:
var myFunction = function (x) {
if (!/^[a-zA-Z]+$/.test(x.value)) {
console.log('error')
}
};
&#13;
<input name="display_name" type="text" onkeyup="myFunction(this)"></input>
&#13;
答案 3 :(得分:-1)
^字符表示正则表达式仅从字符串的开头进行检查。这就是为什么123test的行为与你期望的一样,但test123没有。
尝试删除^,它应该有效。