正则表达式:仅允许字符a-z,A-Z

时间:2016-07-21 12:41:59

标签: javascript regex extjs

ExtJS 5.1

假设我有一个这样的例子,我想要用户的姓氏,所以我不想要任何数字或特殊字符,我尝试了很多可能但却无法做到:

var controller=this;
var refs = controller.getReferences();
var exp = '/^([^0-9]*)$/';

onButtonClick: function(button, e, eOpts) {
    if(refs.nameSurname.value.match(exp)){
        Ext.Msg.alert('ERROR', 'BlaBla');
    }
}

使用此代码,当我在文本字段中输入数字时,我没有错误...

谢谢。

1 个答案:

答案 0 :(得分:2)

假设您需要实际匹配没有数字的字符串 ...

你不应该用单引号括起正则表达式文字,删除它们。您不需要捕获组,可以删除()

使用

var exp = /^[^0-9]*$/;

现在,要检查字符串是否与正则表达式匹配,使用RegExp#test()会更安全。

请参阅下面的演示:



var refs_nameSurname = "Som8ehere";
if(!(/^[^0-9]*$/.test(refs_nameSurname))){
        console.log('ERROR');
}




但是,你可以反转逻辑,并在字符串中找到一个数字后显示错误(更简单!):



var refs_nameSurname = "Somehere12";
if(/[0-9]/.test(refs_nameSurname)){
        console.log('ERROR');
}