gpt4 book ai didi

javascript - 使用正则表达式从 html 文本中过滤

转载 作者:行者123 更新时间:2023-12-02 16:31:56 25 4
gpt4 key购买 nike

我从 ajax 请求中获取整个 html 页面作为文本 (xmlhttp.responseText)

然后过滤文本以从该文本以及该表单内的所有内容中提取 html form

我写了一个正则表达式:

text.match(/(<form[\W\w]*<\/form>)/gim)

由于我不是正则表达式方面的专家,所以我无法确定它是否适用于每种情况并将所有内容都包含在 form 标记中?

有没有更好的方法可以让我在正则表达式中表达一切?这样正则表达式看起来像

 text.match(/(<form[__everything_syntaxt_here__]*<\/form>)/gim)

最佳答案

不得不与 IE 5 打交道,你可怜的灵魂。

快速回答您的问题[\W\w]真的是匹配所有内容的最佳方式吗?

,JavaScript 不支持 s修改器使 .匹配换行符。做[\W\w]基本上告诉正则表达式:“匹配任何单词字符或不是单词字符的任何内容”,您可以看到绝对每个字符都属于这些类别中的任何一个。

但是,如果您想要一个更可靠的解决方案来处理 <!-- html comments -->并且页面上有多个表单,最好的方法类似于 this SO answer 中解释的那样 但针对 HTML 进行了更改。

这就是我要使用的:

<!--(?:(?!-->)[\w\W])*-->|(<form(?:(?:(?!<\/form>|<!--)[\w\W])|(?:<!--(?:(?!-->)[\w\W])*-->))*</form>)

Regular expression visualization

看看Debuggex Demo查看您实际得到的匹配项。在 JavaScript 中,您可以期待第一个捕获组。如果它是空的,那么这只是为了摆脱注释形式,如解释的 here

关于javascript - 使用正则表达式从 html 文本中过滤 <form>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28209989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com