1

可以说我有以下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 没有,所以我有点难以让这些示例适合我的问题。

4

4 回答 4

3

试试这个注册前:<[^>]*>

这将删除所有带有或不带有属性和结束标记的 html。

于 2013-05-17T04:36:26.943 回答
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, '') })
);
于 2013-05-17T06:08:40.413 回答
1

此正则表达式将匹配bbr标签:

</?br?\s*/?>

要在 Javascript 中使用它,您可以编写如下内容:

result = subject.replace(/<\/?br?\s*\/?>/img, "");

所有匹配的标签都将替换为空字符串。

根据我的经验,最好用空格替换br标签,用空字符串替换普通的内联标签。如果这是您想要做的,则下一个正则表达式仅匹配b标签:

</?b\s*/?>

而这个只匹配br标签:

</?br\s*/?>
于 2013-05-17T17:03:47.273 回答
0

在正则表达式中,() 之间的内容表示捕获组,这些组以后可以作为变量(\1 \2 \3 等)或有时 $1 $2 $3 访问。因此,只需使用它们来捕获您想要的文本。

我认为这个正则表达式会为你工作:

<b>(Item \d+)</b>(.*?)<br>

详细地说,该表达式的意思是:

  • (Item \d+):任何格式为“项目[至少1位] ”的字符串
  • (.*?):任何一组字符,?最小化序列中的字符数。

所以现在在<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
于 2013-05-17T05:20:09.820 回答