加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

带有正则表达式的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.');
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读