【问题标题】:In Javascript or jQuery, how do I remove only the first and last tag?在 Javascript 或 jQuery 中,如何仅删除第一个和最后一个标签?
【发布时间】:2010-01-19 17:54:07
【问题描述】:

给定以下字符串:

var htmlStr = '<p class="red_349dsa01">This is</p><p class="blue_saf9vsaz">a test</p>';

如何从这个字符串中删除第一个和最后一个标签?结果是这样的:

var htmlStr = 'This is</p><p class="blue_saf9vsaz">a test';

我知道这会创建无效的 HTML,但我只是想知道这是否可以完成。

【问题讨论】:

  • 你真的需要这样做吗? Jquery 对操作 HTML 有很好的支持,但前提是你使用有效的 HTML,例如很容易得到第一段

标签: javascript jquery html tags


【解决方案1】:

你可以试试

var htmlStr = '<p class="red_349dsa01">This is</p><p class="blue_saf9vsaz">a test</p>';
alert(htmlStr.substring(htmlStr.indexOf('>') + 1, htmlStr.lastIndexOf('<')));

【讨论】:

  • 我总是喜欢看一个非正则表达式的选项,但是在所有的拆分、反转、重新加入和字符串搜索之后,这会更快吗?
  • 这是我找到的唯一反向实现。许多语言都内置了字符串反转功能,我发现这是查找最后一个引用的最简单方法,除非该语言使用负搜索实现 indexOf。
  • 找到了,真有趣,它是 lastIndexOf。抱歉,这似乎容易多了。
  • 哈哈是的。我没想到你可以把它全部换成lastIndexOf,我一定是变慢了。我会 +1,但我今天的票已经用完了。
【解决方案2】:

你需要一个正则表达式:

var regex = /(?:^<p[^>]*>)|(?:<\/p>$)/g;
var htmlStr = '<p class="red_349dsa01">This is</p><p class="blue_saf9vsaz">a test</p>';  
htmlStr.replace(regex, "");

正则表达式的解释:

  1. 第一部分(?:^&lt;p[^&gt;]*&gt;)使用插入符号^匹配字符串的开头,
  2. 然后&lt;p 将匹配开头p 标记,
  3. [^&gt;]* 将匹配除 &gt; 字符之外的任何字符,
  4. | 将表达式一分为二,每对大括号中的一个,其中一个可以匹配,
  5. &lt;\/p&gt;$ 表达式将匹配结束 &lt;/p&gt; 标记只有如果它正好在字符串的末尾,使用 $ 字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 2022-01-17
    • 2012-08-16
    • 1970-01-01
    相关资源
    最近更新 更多