0

我需要一些关于 js 正则表达式主题的建议。

我有一个字符串

var page = '<html attribute1="<test1>" test2 attribute2="test2"></html>';

我正在尝试获取片段

<html attribute1="<test1>" test2 attribute2="test2">

但我的代码:

page.match(/<.*?>/);

只返回第一次出现“>”的字符,因此

<html attribute1="<test1>

我应该怎么做才能忽略引号之间出现的符号“>”?请帮助我,对不起我的英语;)

4

3 回答 3

0

你可以试试这个正则表达式:

^<(?:"[^"]*"|[^>])+>

正则表达式 101 演示

它将匹配双引号和任何内部或非>直到第一个>

如果你也有单引号,也许可以使用这个:

^<(?:"[^"]*"|'[^']*'|[^>])+>
于 2013-10-11T18:29:44.327 回答
0

你可以试试这个page.match(/<.*">/);

于 2013-10-11T18:35:26.967 回答
0

page.match(/\<.*\>(?=<\/)/);应该做的伎俩。

您正在使用的模式是.*?作为惰性匹配选择并在找到>. 从模式中删除?将它变成一个贪婪匹配,继续搜索直到最终>并返回完整的字符串。

我还在结束 html 标记之前添加了一个前瞻来结束匹配,并添加了反斜杠来转义符号。

于 2013-10-11T18:42:28.690 回答