如何将regex分配给变量以供以后在字符串上使用?

时间:2015-12-19 22:52:07

标签: javascript regex oop

我目前有这个:

var input = "some input";
var firstRegex = input.match(/[aeiou]/gi);
var secondRegex = /ee/.test(input);

因此,如果输入变量未定义,则两个正则表达式都将阻止代码在浏览器中编译。

有没有办法将正则表达式分配给变量,以便稍后可以在输入时调用它们?

例如,在对象内:

var checkStrings = {

 firstRegex : match(/[aeiou]/gi),
 secondRegex : /ee/,

}

// call on input
 checkStrings.firstRegex(input);

2 个答案:

答案 0 :(得分:4)

来自Mozilla的这个link详细介绍了js中的RegExp对象,但是如果你想简单地为一个变量分配一个正则表达式,你可以这样做:

var firstRegex = new RegExp(/[aeiou]/gi);
var secondRegex = new RegExp(/ee/);

然后你会像现在一样打电话给他们。

if (input) {
    var matches = input.match(firstRegex);
    var passedTest = secondRegex.test(input);
}

你可以在@IIya建议的对象中更容易地做到这一点,但我想我会在js中添加一些关于RegExp对象的信息。

答案 1 :(得分:1)

您可以使用谓词:

var checkStrings = {
    checkFirstRegex = function(x) { 
        return x.match(/[aeiou]/gi);
    },
    checkSecondRegex = function(x) {
        return /ee/.test(x);
    }
};

// call on input
checkStrings.firstRegex(input);

使用ES6箭头功能,它变得更短:

var checkStrings = {
    checkFirstRegex = x=> x.match(/[aeiou]/gi),
    checkSecondRegex = x => /ee/.test(x)
};