如何在 jquery 函数中使用正则表达式修饰符

How do I use regex modifiers in jquery function?

本文关键字:正则表达式 jquery 函数      更新时间:2023-09-26

我有这个html内容

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<center><img style="margin-left: auto; display: block; margin-right: auto;" src="../img/escudocaba.png" alt="#" width="470" height="90" /></center>
<h1>Hoddda</h1>
</body>
</html>

我需要提取正文的内容,而不包括正文标签。我已经制作了这个完美匹配的正则表达式:

/<body[^>]*>(.*?)<'/body>/is

正如您在本网站中看到的

https://regex101.com/

但是当我使用它时

var bodyHtml=$editor.val().match( /<body[^>]*>(.*?)<'/body>/is);

我没有得到任何结果...还尝试了一个类似的正则表达式,最终没有使用相同的格式并且没有修饰符,并且它是匹配

   var bodyHtml=$editor.val().match(/(?:.(?!<'s*body[^>]*>))*'>.+/);

例如返回

<center><img style="margin-left: auto; display: block; margin-right: auto;" src="../img/escudocaba.png" alt="#" width="470" height="90" /></center>

在这种情况下,我该怎么做才能将正则表达式修饰符与此 jquery 函数一起使用?谢谢

在正则表达式的JavaScript风格中,.与新行不匹配。

要解决这个问题,您可以使用[^]['s'S]['d'D](?:.|'n)......

试试这个代码:

var bodyHtml = $editor.val().match(/<body[^>]*>(['s'S]*?)(<'/body>|$)/i)[1];

s-修饰符在JS中不存在。 尝试使用 [''s''S] 代替点,如下所示: Javascript 正则表达式多行标志不起作用

喜欢这个:

<body[^>]*>(['s'S]*?)<'/body>