我正在尝试做一些我认为很容易做的事情,即通过匹配正则表达式将字符串限制为某些字符.
var value = 'FailureStr1ng'; var type = 'ALPHA'; var regex = null; switch(type) { case 'ALPHA': regex = '^[a-zA-Z]+$'; break; case 'NUMERIC': regex = '^[0-9]+$'; break; case 'ALPHANUMERIC': regex = '^[a-zA-Z0-9]+$'; break; } return value.match(regex);
您需要RegExp.test,它测试匹配的值而不是检索匹配.使用现有代码,这意味着:
if(!new RegExp(regex).test(value)){ alert('Your string was invalid.'); }
但是,最好使用RegExp文字而不是字符串,因为它们更有效,更清晰,更不容易出错:
var value = 'FailureStr1ng'; var type = 'ALPHA'; var regex = null; switch(type) { case 'ALPHA': regex = /^[a-zA-Z]+$/; break; case 'NUMERIC': regex = /^[0-9]+$/; break; case 'ALPHANUMERIC': regex = /^[a-zA-Z0-9]+$/; break; } if(!regex.test(value)) { alert('Your string was invalid.'); }
更好的是,使用字典:
var expressions = { ALPHA: /^[a-zA-Z]+$/,NUMERIC: /^[0-9]+$/,ALPHANUMERIC: /^[a-zA-Z0-9]+$/ }; if(!expressions[type].test(value)) { alert('Your string was invalid.'); }