带有正则表达式的javascript – .match()返回null
发布时间:2020-12-14 06:30:56 所属栏目:百科 来源:网络整理
导读:我正在尝试做一些我认为很容易做的事情,即通过匹配正则表达式将字符串限制为某些字符. var value = 'FailureStr1ng';var type = 'ALPHA';var regex = null;switch(type) { case 'ALPHA': regex = '^[a-zA-Z]+$'; break; case 'NUMERIC': regex = '^[0-9]+$';
我正在尝试做一些我认为很容易做的事情,即通过匹配正则表达式将字符串限制为某些字符.
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); 出于某种原因,当使用匹配时,它总是返回null.有没有办法解决这个问题,或者更好的方法来解决这个问题? 注意:这里的代码是一个包含更大代码的代码,而值和类型变量通常由另一个方法定义.
您需要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.'); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |