Javascript .match()在使用/ gi标志时不起作用
在stringhtml
上使用.match
函数时,以下代码返回一个包含匹配项的数组。
html = '<span><b>123</b>C / <b>456</b>K</span>' var matches = html.match('<span><b>(.*?)</b>C / <b>(.*?)</b>K</span>') console.log(matches)
但是,在添加/g
标志后,正则expression式不再返回任何内容,而是返回null
。 是否正确使用如下所示?
html = '<span><b>123</b>C / <b>456</b>K</span>' var matches = html.match('/<span><b>(.*?)</b>C / <b>(.*?)</b>K</span>/g') console.log(matches)
从正则expression式中删除引号:
var matches = html.match(/<span><b>(.*?)<\/b>C \/ <b>(.*?)<\/b>K<\/span>/i);
当使用'/<span><b>(.*?)</b>C / <b>(.*?)</b>K</span>/gi'
则使用引号中的文字string进行匹配。
你也需要逃避/
并删除g
返回所有的比赛。
它会返回:
["<span><b>123</b>C / <b>456</b>K</span>", "123", "456"]