基本的に、私はこれを持っています:
str.replace(/<p><\/p>|<p>\.<\/p>/g);
内部に何もない、または 3 文字未満のすべての段落を削除しようとしています。正規表現の最初の部分は正しく機能しますが、次のような段落は<p>.</p>
削除されません。初心者の質問で申し訳ありません。
基本的に、私はこれを持っています:
str.replace(/<p><\/p>|<p>\.<\/p>/g);
内部に何もない、または 3 文字未満のすべての段落を削除しようとしています。正規表現の最初の部分は正しく機能しますが、次のような段落は<p>.</p>
削除されません。初心者の質問で申し訳ありません。
タグをいじる必要はありません。ブラウザーは、これらすべての API を提供します。この API は、より高速に実行され、バグやエクスプロイトが発生しにくく、「ブラウザーがフリーズするのはなぜですか?」という煩わしさから解放されます。癖。
var pTags = document.getElementsByTagName("p");
それでおしまい。ページ内のすべてのタグは、変数 pTags 内のドキュメント要素の配列の一部になりました。
次に、指定された pTags[i] の内部を調べて、次の方法で削除できます。
pTags[i].parentNode.removeChild(pTags[i]);
もちろん、これに DOM APIを使用する方法は他にもあります。
次の正規表現を使用します。
<p>.{0,2}</p>
^ any character, 0 - 2 times (you said less than 3)
.
as をエスケープすると\.
、リテラルに一致し.
ます。
ここにデモンストレーションがあります:http://jsfiddle.net/yQ5pu/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/
<p>[0-9A-Za-z]{0,2}</p>
3 回未満の場合は、段落 {0,2} の間の任意の文字または数字。