Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
javascript中的正则表达式,以获取一个选项卡并将其';内容_Javascript_Regex - Fatal编程技术网

javascript中的正则表达式,以获取一个选项卡并将其';内容

javascript中的正则表达式,以获取一个选项卡并将其';内容,javascript,regex,Javascript,Regex,我在JS中将以下html模板作为字符串: Hello <repeater> <div class="row"> <div class="col col-33"><img src="{{col1}}" /></div> <div class="col col-33">{{col2}}</div> <div class="col col-33">{{

我在JS中将以下html模板作为字符串:

Hello
<repeater>
    <div class="row">
        <div class="col col-33"><img src="{{col1}}" /></div>
        <div class="col col-33">{{col2}}</div>
        <div class="col col-33">{{col3}}</div>
    </div>
</repeater>
World!
你好 {{col2}} {{col3}} 世界! 我想编写一些正则表达式来返回标记和内容(可能是页面上的多个转发器),因此结果如下:

<repeater>
    <div class="row">
        <div class="col col-33"><img src="{{col1}}" /></div>
        <div class="col col-33">{{col2}}</div>
        <div class="col col-33">{{col3}}</div>
    </div>
</repeater>
/* assuming var tpl to hold the string */
var frag = document.createElement('div');
frag.innerHTML = tpl;

var repeaterElement = frag.querySelector('repeater');
var string = repeaterElement.outerHTML;

{{col2}}
{{col3}}
在任何地方都找不到任何工作示例,也无法理解。任何帮助都将不胜感激

谢谢

编辑

正如下面回答中所建议的,我尝试了以下方法:

var myRe = new RegExp("<repeater>([\s\S]*?)<\/repeater>", "i");
var myArray = myRe.exec(html);
var myRe=newregexp(([\s\s]*?),“i”);
var myArray=myRe.exec(html);

myArray返回空对象。

不要尝试用正则表达式解析html;这将是一件痛苦/不可能的事。对于您的特定示例,我认为
([\s\s]*?)
可以(),但您最好使用html解析器并处理生成的树(因为
是有效的html语法)。

您可以使用标准DOM方法,这更可靠。我已经准备好了一份工作。它的工作原理如下:

<repeater>
    <div class="row">
        <div class="col col-33"><img src="{{col1}}" /></div>
        <div class="col col-33">{{col2}}</div>
        <div class="col col-33">{{col3}}</div>
    </div>
</repeater>
/* assuming var tpl to hold the string */
var frag = document.createElement('div');
frag.innerHTML = tpl;

var repeaterElement = frag.querySelector('repeater');
var string = repeaterElement.outerHTML;
var str='Hello\n\n\n\n{{col2}}\n{{col3}}\n\n\n世界!这里还有其他的一些测试'
var res=str.match(/([\s\s]*?)/g);
控制台日志(res);

选中此项,您将获得匹配的值数组

您知道吗?在
document.createDocumentFragment()
中输入内容并使用DOM方法如何?@Boldewyn-正如我前面提到的-它是一个字符串。那个字符串是html标记,但仍然是字符串。那又怎样?你总是用正则表达式解析字符串。只有当字符串包含HTML/XML,并且您希望通过正则表达式获得该标记的知识时,这通常是个坏主意。@developer82您检查过我的答案了吗?请阅读
Regexp.exec
上的。当表达式失败时,将返回
null
。请使用延迟表达式,这将是正确的([\s\s]*?)谢谢。在你提到的网站上,它似乎起作用,但在我的代码上却不起作用。请参阅我上面的编辑。@developer82不确定为什么它不能与RegExp构造函数一起工作;使用一个文本(性能也更好):
var pattern=/([\s\s]*?)/gi
Hi,正如我提到的-它是一个html字符串-它不在dom中。然后将它输入dom中。您评估过JSFIDLE(工作示例)吗?它永远不会出现在文档中。创建的
div
与它完全分离。(您需要事先使用类似于
document.body.appendChild(frag)
的内容。)@Boldewyn bro没问题