2017-06-13 17 views
0

にスペースを扱うこの正規表現この正規表現

var reg = <font[^>]*>(?:\s*<(\w+)>\s*<\/\1>\s*|\s*)<\/font> 

は、空のフォントタグを削除するには(REGを、「」)置き換えで使用されています。これを削除します。

<font size="3"></font> 

大丈夫です。

それは

<font size="3"> </font> 

または

<font size="3">&nbsp;</font> 

または

<font size="3"> </font> 

に削除されますので、どのように私は私が任意の数のすべての空のフォントタグを見つけることができるようにしたい、それを変更することができますタグ間の空白を空の文字列に置き換えます。

+0

テキストから[ストリップHTMLの可能性の重複JavaScript](https://stackoverflow.com/questions/822452/strip-html-from-text-javascript) – OneNeptune

+1

@OneNeptuneあなたも質問を見ましたか? –

+0

あなたの文字列は単にフォントタグですか、それとももっとHTMLですか?いずれにしても、HTMLを解析するためにRegexを使用しません。 – George

答えて

0

あなたがしたいすべてのタグの間の任意の数のスペースを持つすべての空のフォントタグを見つけて、空の文字列に置き換え、あなたは正規表現ビットを簡素化することができている場合。あなたの現在の正規表現で示さてきたように、あなたもその中に空のタグの一つの層をキャッチしたい場合は、次のように行うことができます:

var reg = /<font[^>]*>(?:\s|&nbsp;|<(\w+)>(?:\s|&nbsp;)*<\/\1>)*<\/font>/gi 
 

 
var testStr = `<font size="3"></font> 
 
<font size="3"> </font> 
 
<font size="3">&nbsp;</font> 
 
<font size="3">&nbsp;&nbsp;&nbsp; </font> 
 
<font size="3"> </font> 
 
<font size="3"><something>&nbsp;&nbsp;</something></font>` 
 

 
console.log(testStr.replace(reg, ""))

0

はあなたの正規表現どおり、この

<font[^>]*>(?:\s*<(\w+)>\s*<\/\1>\s*|\s*|(&nbsp;)+)<\/font> 

を試してみてください。それはすでにスペースをキャッチしています。私はちょうどnbspを追加しました。

regex101リンク:https://regex101.com/r/4Msyv1/2

+0

複数の「 」がある場合はどうなりますか? – SaiUnique

+0

私は忘れました。私に言ってくれてありがとう –