if语句 - 字段只接受字母

时间:2016-09-09 13:58:46

标签: jquery regex

场合

我有一个只需要接受信件的字段。如果提交时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;
&#13;
&#13;

4 个答案:

答案 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)

也许:

&#13;
&#13;
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;
&#13;
&#13;

答案 3 :(得分:-1)

^字符表示正则表达式仅从字符串的开头进行检查。这就是为什么123test的行为与你期望的一样,但test123没有。

尝试删除^,它应该有效。