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');
}
}
使用此代码,当我在文本字段中输入数字时,我没有错误...
谢谢。
答案 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');
}