基本上,我有这个:
str.replace(/<p><\/p>|<p>\.<\/p>/g);
尝试删除内部没有或少于3个字符的所有段落。正则表达式的第一部分正常工作,但像这样的段落:<p>.</p>
不会被删除。对不起新手问题。
答案 0 :(得分:1)
使用以下正则表达式。
<p>.{0,2}</p>
^ any character, 0 - 2 times (you said less than 3)
将.
转换为\.
与文字.
匹配。
答案 1 :(得分: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/
答案 2 :(得分:1)
您不需要使用标签,浏览器为所有这些提供API,运行速度更快,更不容易出现错误/漏洞,并且令人讨厌“为什么我的浏览器会冻结?”怪异。
var pTags = document.getElementsByTagName("p");
就是这样。页面中的每个标记现在都是变量pTags内的文档元素数组的一部分。
然后你可以检查任何给定的pTags [i]里面的内容,并通过以下方式将其删除:
pTags[i].parentNode.removeChild(pTags[i]);
当然,还有其他方法可以使用the DOM API。
答案 3 :(得分:0)
<p>[0-9A-Za-z]{0,2}</p>
段落{0,2}之间的任何字符或数字少于3次出现。