带有正则表达式的javascript – .match()返回null

前端之家收集整理的这篇文章主要介绍了带有正则表达式的javascript – .match()返回null前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试做一些我认为很容易做的事情,即通过匹配正则表达式将字符串限制为某些字符.
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.');
}

猜你在找的正则表达式相关文章