正则表达式在引号内不起作用

Regexp won't work inside quotes

本文关键字:不起作用 正则表达式      更新时间:2023-09-26

我使用此正则表达式来匹配方括号内的文本

/'[link'](.*)'['/link']/g

我匹配的文本

[link]The text goes here[/link]

当我在 regex101 中测试它时,正则表达式的工作很棒,但是当我在我的网站中使用它时,它不起作用。这就是我在我的网站上使用它的方式。

case 'untitle':
   var html = '<script>$(document).ready(function(){var topic = $(".post-body div").text();
   topic = topic.split(/'[link'](.*)'['/link']/g); $(".article-title a").attr("href", topic[1]);
   });<'/script>';
break;
$('body').append(html);

我发现正则表达式不起作用,因为它在引号内,所以我需要一种方法来转义它并使其工作。

你的问题是 '' 是转义续集,所以它正在转义 [ caharacter。您需要将字符串中的''加倍。

但是设计很糟糕,附加JavaScript是没有意义的。

好吧,您正在尝试在某些情况下运行代码。为什么要将代码字符串附加到页面是没有意义的。

function linkify () {
   var topic = $(".post-body div").text();
    topic = topic.split(/'[link'](.*)'['/link']/g); $(".article-title a").attr("href", topic[1]);
}

和开关

case 'untitle':
    linkify();
break;

目前还不清楚你的确切问题是什么;但你可能被正则表达式的贪婪所吸引。基本上,它匹配整个[link]The text goes here[/link] foo [link] bar [/link],而不仅仅是第一个。所以你需要改用'[link'](.*?)'['/link']