JavaScript regex multiline text between two tags(两个标记之间的JavaScript正则表达式多行文本)
问题描述
我编写了一个正则表达式以从HTML获取字符串,但似乎多行标志不起作用。
这是我的模式,我想获取h1标记中的文本。
var pattern= /<div class="box-content-5">.*<h1>([^<]+?)</h1>/mi
m = html.search(pattern);
return m[1];
我创建了一个字符串来测试它。当字符串包含"
,则结果始终为空。如果删除所有
"s,它给了我正确的结果,无论有没有/m标志。
我的正则表达式有什么问题?
推荐答案
您正在寻找/.../s修饰符,也称为doTall修饰符。它强制点.也匹配换行符,而它默认情况下不会这样做。
坏消息是它<%s>不存在于(从ES2018开始,见下文)。好消息是,您可以通过使用字符类(例如s)及其否定(S)来解决它,如下所示:
[sS]
因此,在您的情况下,正则表达式将变为:
/<div class="box-content-5">[sS]*<h1>([^<]+?)</h1>/i
从ES2018开始,JavaScript支持s(DotAll)标志,因此在现代环境中,您的正则表达式可以与您编写的一样,但在末尾带有s标志(而不是m;m更改^和$的工作方式,而不是.):
/<div class="box-content-5">.*<h1>([^<]+?)</h1>/is
这篇关于两个标记之间的JavaScript正则表达式多行文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:两个标记之间的JavaScript正则表达式多行文本
基础教程推荐
- 在 Javascript 中使用 Fetch API 上传文件并显示进度 2022-01-01
- 逻辑运算符 ||在 javascript 中,0 代表 Boolean false? 2022-01-01
- 使用 jQuery 在悬停时交换 DIV 类 2022-01-01
- 即使每次插入第一个输入的值不同,第二个输入仍显示相同的输入值 2022-01-01
- CORS:当凭据标志为真时,无法在 Access-Control-Allow-Origin 中使用通配符 2022-01-01
- 从快速中间件中排除路由 2022-01-01
- 最佳动态 JavaScript/JQuery 网格 2022-01-01
- 当木偶师打开Chrome时,不能使用Chrome扩展 2022-01-01
- HTML5 画布调整为父级 2022-01-01
- 带角度的选项卡:仅使用 $http 在单击时加载选项卡 2022-01-01
