假设我有以下html
<b>Item 1</b> Text <br>
<b>Item 2</b> Text <br>
<b>Item 3</b> Text <br>
<p><font color="#000000" face="Arial, Helvetica, sans-serif"><b>Item 4:</b></font></p>
<p><font color="#000000" face="Arial, Helvetica, sans-serif">Detailed Description</font></p>
并使用以下正则表达式捕获返回(Item 1:.*?<br>)/gi
的数据<b>Item 1</b> Text <br>
如何删除或删除<b>,</b> and <br>
留下
第1项文字
我一直试图理解这段代码<(\w+)[^>]*>.*<\/\1>
,但到目前为止还没有运气。我在这里看到的所有示例似乎都需要一个id类,我的html没有这样,所以我有点陷入让这些例子适合我的问题。
答案 0 :(得分:3)
试试这个注册表:<[^>]*>
这将删除包含或不包含属性和结束标记的所有html。
答案 1 :(得分:1)
这应该可以解决问题:
var matches = stringToTest.match(/(Item \d+.*?<br\/?>)/gi);
for (var i = 0; i < matches.length; i++) {
matches[i] = matches[i].replace(/<[^>]+>/g, '');
}
alert(matches);
如果你有jQuery:
alert(
$.map(stringToTest.match(/(Item \d+.*?<br\/?>)/gi), function(v) { return v.replace(/<[^>]+>/g, '') })
);
答案 2 :(得分:1)
此正则表达式将匹配 b 和 br 标记:
</?br?\s*/?>
要在Javascript中使用它,你可以这样写:
result = subject.replace(/<\/?br?\s*\/?>/img, "");
所有匹配的标签都将替换为空字符串。
根据我的经验,最好用空格替换 br 标记,并用空字符串替换普通的内联标记。如果这是您想要做的,那么下一个正则表达式只匹配 b 标记:
</?b\s*/?>
并且这只匹配 br 标记:
</?br\s*/?>
答案 3 :(得分:0)
在正则表达式中,()之间的内容表示可以稍后作为变量(\ 1 \ 2 \ 3等)或有时$ 1 $ 2 $ 3访问的捕获组。因此,只需使用它们来捕获您想要的文本。
我认为这个正则表达式适合你:
<b>(Item \d+)</b>(.*?)<br>
详细说明,表达方式意味着:
(Item \d+)
:格式为&#34;项目 [至少1位数] &#34; (.*?)
:任意字符组,?
可最大限度地减少序列中的字符数。所以现在在<b>Item 5434</b>hel34lo 0345 345<br>
中,正则表达式位于捕获的组之上:
\1
=项目5434 \2
= hel34lo 0345 345 我从来没有在javascript中编程,但更确切地说,这段代码可能有效:
var myString = "<b>Item 5434</b>hel34lo 0345 345<br>";
var myRegexp = /<b>(Item \d+)</b>(.*?)<br>/g;
var match = myRegexp.exec(myString);
alert(match[1]); // Item 5434
alert(match[2]); // hel34lo 0345 345