0

所以基本上,我有这个:

str.replace(/<p><\/p>|<p>\.<\/p>/g);

试图删除里面没有或少于 3 个字符的所有段落。正则表达式的第一部分可以正常工作,但是像这样的段落:<p>.</p>不要被删除。对不起新手问题。

4

4 回答 4

1

使用以下正则表达式。

<p>.{0,2}</p>
   ^ any character, 0 - 2 times (you said less than 3)

转义.as\.匹配文字.

这是一个演示:http: //jsfiddle.net/yQ5pu/1/

于 2012-11-17T19:40:14.177 回答
1

试试这个正则表达式。/<\s*(p|P)[^>]*>([^<.]{0,3}|\..{1,2}|.{1,2}\.)<\s*\/(p|P)\s*>/g 这将匹配<p>标签,不区分大小写,并且段落可以具有不同的属性。

例子:

var str = "<p>test</p><p>t</p><P>tes</P><p class=\"someclass\">s</p>< p >some long text</p>";
str.replace(/<\s*(p|P)[^>]*>([^<.]{0,3}|\..{1,2}|.{1,2}\.)<\s*\/(p|P)\s*>/g, '');

还有一个 jsfiddle 示例:http: //jsfiddle.net/Tkwk5/3/

于 2012-11-17T19:55:01.993 回答
1

你不需要玩这些标签,浏览器为所有这些提供了一个 API,它运行得更快,更不容易出现错误/漏洞,以及烦人的“为什么我的浏览器死机?” 怪癖。

var pTags = document.getElementsByTagName("p");

就是这样。页面中的每个标签现在都是变量 pTags 内文档元素数组的一部分。

然后,您可以检查任何给定 pTags[i] 内部的内容,并通过以下方式将其删除:

pTags[i].parentNode.removeChild(pTags[i]);

当然,还有其他方法可以为此使用DOM API

于 2012-11-17T19:58:57.567 回答
0
<p>[0-9A-Za-z]{0,2}</p>

段落 {0,2} 之间的任何字符或数字出现少于 3 次。

于 2012-11-17T19:44:29.100 回答