Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将[url]标记替换为<;a href>;Javascript/JQuery中的标记_Javascript_Jquery_Regex - Fatal编程技术网

将[url]标记替换为<;a href>;Javascript/JQuery中的标记

将[url]标记替换为<;a href>;Javascript/JQuery中的标记,javascript,jquery,regex,Javascript,Jquery,Regex,我尝试使用JQuery实现以下逻辑: 替换[url=”的字符串值http://www.google.com“]Google[/url]和 请看下面我的HTML页面。问题是按下按钮时,原始文本只是粘贴,没有进行正则表达式替换 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Test</title>

我尝试使用JQuery实现以下逻辑:

  • 替换
    [url=”的字符串值http://www.google.com“]Google[/url]
请看下面我的HTML页面。问题是按下按钮时,原始文本只是粘贴,没有进行正则表达式替换

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Test</title>
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript">
        //<![CDATA[
        function processJs() {
            var oldtext = $("#oldtext").html();
            var newtext = oldtext.replace('\[url\s?=\s?"?(.*?)"?\](.*?)\[\/url\]', '<a href="$1">$2</a>');
            $('#mydiv').html(newtext);
        }
        //]]>
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div id="oldtext">
            Try this funky new search engine:
            [url="http://www.google.com"]Google[/url]
            Or this older one from back in the day:
            [url="http://uk.altavista.com"]AltaVista[/url]
        </div>
        <div>
            <input type="button" id="btn" value="Replace" onclick="processJs(); return false;" />
        </div>
        <div id="mydiv" style="background-color: #eeeeee; border: 2px inset #aaaaaa">
            Replaced text will go here.
        </div>
    </form>
</body>
</html>

试验
//
试试这个时髦的新搜索引擎:
[url=”http://www.google.com“]Google[/url]
或者是当年的老版本:
[url=”http://uk.altavista.com“]AltaVista[/url]
替换的文本将转到此处。

我已经使用ASP.NET完成了这个正则表达式模式的工作,所以我不确定当移植到JavaScript时问题出在哪里…

这不是一个有效的正则表达式。使用
/
作为修饰符:

/\[url\s?=\s?"?(.*?)"?\](.*?)\[\/url\]/
使功能:

function processJs() {
    var oldtext = $("#oldtext").html();
    var newtext = oldtext.replace(/\[url\s?=\s?"?(.*?)"?\](.*?)\[\/url\]/g, '<a href="$1">$2</a>');
    $('#mydiv').html(newtext);
}
函数processJs(){
var oldtext=$(“#oldtext”).html();
var newtext=oldtext.replace(/\[url\s?=\s?(.*?)“\]”(.*?\[\/url\]/g');
$('#mydiv').html(newtext);
}
结尾的
g
将在文本上重复它。这里有一个小提琴:

var newtext=oldtext.replace(/\[url\s?=\s?(.*?)?“\]”(.*?\[\/url\]/g');
将“搜索”指定为正则表达式对象,而不是字符串


仅使用/../将自动透明地装箱

请问后面的/g是什么意思?@EvilDr的意思是匹配所有匹配项(这是特定于JS的),因为您希望替换所有匹配项,而不仅仅是第一个。“全局”-即,替换所有匹配项,而不仅仅是第一个。令人震惊。回答得如此之快,StackOverflow甚至不允许我再接受7分钟:-D
var newtext = oldtext.replace(/\[url\s?=\s?"?(.*?)"?\](.*?)\[\/url\]/g, '<a href="$1">$2</a>');