gpt4 book ai didi

javascript - 如何匹配 HTML 标签中未包含的所有引号?

转载 作者:行者123 更新时间:2023-11-28 11:34:33 26 4
gpt4 key购买 nike

在以下字符串中...

var str = 'Foobar is so "awesome."  I <span prop="nifty">"really"</span> <span prop="attr">think it is so</span> <span prop="nifty" prop="attr">"cool!"</span>'

...我如何编写一个正则表达式来匹配 Awesome、Really 和 Cool 等词周围的引号 ("),同时不匹配 HTML 标记内的引号?

我正在使用 JavaScript 的替换函数将引号替换为 "

我希望有一个我可以使用的正则表达式......

str.replace(/regex-magic/g, "&#34;")

..给我输出...

Foobar is so `&#34;`awesome.`&#34;`  I <span prop="nifty">`&#34;`really`&#34;`</span> <span prop="attr">think it is so</span> <span prop="nifty" prop="attr">`&#34;`cool!`&#34;`</span>

非常感谢!!

最佳答案

一如既往,使用正则表达式进行 HTML/XML 处理是一个非常糟糕的主意。

无论如何,我想可以使用以下正则表达式:

([^<]*<[^>]*>[^<]*)*?\"(.*?)\"

第一组用于确保每个打开的标签也被关闭。第二组确保您匹配引号之间的任何内容。

<小时/>

但是,如果您想正确执行此操作,可以使用 tidy 将其转换为 xml 文件,然后使用例如 xmlint 来执行 XPath 查询。我确信 Javascript 也有这样的工具。

示例(在 bash 中):

$ echo 'Foobar is so "awesome."  I <span prop="nifty">"really"</span> <span prop="attr">think it is so</span> <span prop="nifty" prop="attr">"cool!"</span>' | tidy -asxhtml -numeric 2>/dev/null | xmllint --html --xpath 'normalize-space(/)' - | grep -P -o '".*?"'
"awesome."
"really"
"cool!"

关于javascript - 如何匹配 HTML 标签中未包含的所有引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27494283/

26 4 0
文章推荐: javascript - Bootstrap Popover 改变数量
文章推荐: javascript - 删除特定字段的 novalidate
文章推荐: css - 将