Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-在字符串匹配中使用变量_Javascript_Variables_Match - Fatal编程技术网

JavaScript-在字符串匹配中使用变量

JavaScript-在字符串匹配中使用变量,javascript,variables,match,Javascript,Variables,Match,我发现了几个类似的问题,但对我没有帮助。所以我有一个问题: var xxx = "victoria"; var yyy = "i"; alert(xxx.match(yyy/g).length); 我不知道如何在match命令中传递变量。请帮忙。谢谢。尽管match函数不接受字符串文本作为regex模式,但您可以使用RegExp对象的构造函数并将其传递给string.match函数: xxx.match(yyy, 'g').length var re = new RegExp(yyy, 'g

我发现了几个类似的问题,但对我没有帮助。所以我有一个问题:

var xxx = "victoria";
var yyy = "i";
alert(xxx.match(yyy/g).length);

我不知道如何在match命令中传递变量。请帮忙。谢谢。

尽管match函数不接受字符串文本作为regex模式,但您可以使用RegExp对象的构造函数并将其传递给string.match函数:

xxx.match(yyy, 'g').length
var re = new RegExp(yyy, 'g');
xxx.match(re);
您需要的任何标志(例如/g)都可以进入第二个参数

如果模式是字符串,则必须使用

var xxx = "victoria";
var yyy = "i";
var rgxp = new RegExp(yyy, "g");
alert(xxx.match(rgxp).length);
如果模式不是动态字符串:

var xxx = "victoria";
var yyy = /i/g;
alert(xxx.match(yyy).length);

对我来说,看到它被使用是有帮助的。 刚才使用“re”示例进行了此操作:

var分析物数据='样本-'+样本id;
var storage_keys=$.jStorage.index();
var re=新的正则表达式(分析物_数据,'g');

对于(i=0;i示例。查找字符串中的元音数

var word='Web Development Tutorial';
var vowels='[aeiou]'; 
var re = new RegExp(vowels, 'gi');
var arr = word.match(re);
document.write(arr.length);
例如:

let myString = "Hello World"
let myMatch = myString.match(/H.*/)
console.log(myMatch)


这只适用于Firefox,甚至没有文档记录。规范规定该方法只需要一个参数。使用@Chris建议的
RegExp
构造函数是首选方法。+1,顺便说一句,如果传递给
match
方法的参数不是
RegExp
对象,则这是首选方法ally将使用该值调用
RegExp
构造函数,因此您可以使用字符串模式,例如:
“a123”.match(\\d+”[0]==“123”;
与.Search more;完全相同)还有一件事:如果您使用变量来构造RegExp,则应注意该变量可能包含RegExp特殊字符。e、 g.如果通过“c++”,正则表达式编译器将抱怨
SyntaxError:Invalid regular expression:/c++/:Nothing to repeat
如果使用w3schools而不是MDN,您将得到一个假想的否决票!
let myString = "Hello World"
let myMatch = myString.match(/H.*/)
console.log(myMatch)
let myString = "Hello World"
let myVariable = "H"
let myReg = new RegExp(myVariable + ".*")
let myMatch = myString.match(myReg)
console.log(myMatch)