Regexp不会在引号内工作

时间:2014-11-21 16:43:37

标签: javascript jquery regex

我使用此Regexp来匹配方括号内的文本

/\[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);

我发现Regexp不起作用,因为它在引号内,所以我需要一个方法来逃避它并让它工作。

2 个答案:

答案 0 :(得分:0)

不清楚你的确切问题是什么;但你可能被正则表达式的贪婪所困扰。基本上,它匹配整个[link]The text goes here[/link] foo [link] bar [/link]而不是第一个。因此,您需要使用\[link\](.*?)\[\/link\]代替。

答案 1 :(得分:0)

你的问题是\是逃脱的事实,所以它逃脱了[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;