编辑 不是重复的问题。这详细说明了使用函数而不是字符串来处理替换字符串的能力。
我需要提取正则表达式匹配的结果,然后用空字符串替换它们。如果我使用匹配,那么它不执行替换,如果我使用替换,它不会返回匹配的内容。是否可以在一个过程中完成两个过程,还是总是分两个步骤?
例如,我需要从HTML字符串中提取所有标记,将其保存以便单独处理,并将其替换为空字符串。
var html = "This is HTML<br><style>#a{}</style>This is more HTML.<style>#b{}</style>.
我可以立即处理span标记,如果它们全部一起返回,则可以稍后处理。
答案 0 :(得分:2)
它是这样的:
> html = "This is HTML<br><style>#a{}</style>This is more HTML.<style>#b{}</style>"
> tags = []
> html.replace(/<.+?>/g, function(match) { tags.push(match); return "" })
"This is HTML#a{}This is more HTML.#b{}"
> tags
["<br>", "<style>", "</style>", "<style>", "</style>"]
(关于正则表达式不适合解析标记语言的强制性通知)。