我目前有这个:
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);
答案 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)
};