Php preg_匹配所有JS等效物?
Javascript中是否有PHP的preg_match_all的等价物?如果不是,将正则表达式的所有匹配项放入数组的最佳方法是什么?我愿意使用任何JS库来简化它。您可以使用带有全局修饰符的Php preg_匹配所有JS等效物?,php,javascript,regex,phpjs,Php,Javascript,Regex,Phpjs,Javascript中是否有PHP的preg_match_all的等价物?如果不是,将正则表达式的所有匹配项放入数组的最佳方法是什么?我愿意使用任何JS库来简化它。您可以使用带有全局修饰符的match: >>> '1 2 3 4'.match(/\d/g); ["1", "2", "3", "4"] 约翰·雷斯格在他的博客上写了一个很棒的技巧,叫做 它使用javascript的replace函数工作,该函数接受回调函数,不返回任何内容以保持原始内容不变 这可能比使用全局匹配和
match
:
>>> '1 2 3 4'.match(/\d/g);
["1", "2", "3", "4"]
约翰·雷斯格在他的博客上写了一个很棒的技巧,叫做 它使用javascript的replace函数工作,该函数接受回调函数,不返回任何内容以保持原始内容不变
这可能比使用全局匹配和迭代结果数组更简洁,尤其是在捕获多个组的情况下。与JS中PHP中的preg_match_all更好的等效方法是使用exec()函数。这也将允许您捕获组,而使用match()则不能这样做 例如,您希望从变量myString中捕获所有时间和括号中的数字:
var myString = "10:30 am (15 left)11:00 am (15 left)11:30 am";
var pattern = /(\d{1,2}:\d{1,2}\s?[ap]m)\s\((\d+)/gi;
var match;
while (match = pattern.exec(myString)){
console.log('Match: "' + match[0] + '" first group: -> "' + match[1] + '" second group -> ' + match[2]);
}
输出将是:
Match: "10:30 am (15" first group: -> "10:30 am" second group -> 15
Match: "11:00 am (15" first group: -> "11:00 am" second group -> 15
使用newregexp().test()
函数preg\u match\u all(regex,str){
返回新的RegExp(regex,'g').test(str)
}
我不懂这个语法。@erm3nda我想/\d/g是你不懂。注意,这种方法忽略捕获<代码>'1a2b3c4d'。匹配(/(\d)([a-z])/g)只输出[“1a”、“2b”、“3c”、“4d”]
。如果需要,请参阅