2017-03-15 10 views
2

多くの検索の後、私はまだ困惑しています。与えられたパターンにマッチするものを除いて、文字列内のすべてをどのようにマッチさせるのですか?JavaScript内の特定のパターン以外のすべてを一致させる

^またはネガティブルックアヘッドを使用して特定の単語や文字セットを無効にするソリューションが見つかりましたが、特定のパターンに一致するものを無効にするソリューションが必要です。

例テキスト(HTMLのスニペット):

abcd efg hijkl <span class='skipMe'>xxx</span> nop qrst uv wxyz. 

私は、全体のspanタグ以外のすべてを一致させたいです。すなわち、すべてを除くすべて

/<span.*?<\/span>/ 

いずれのリードも高く評価されます。あなたは常にこのような正規表現でテキストを分割することができ

+0

はあなたですそのタグを持たない文字列を取得するという目標はありますか?その場合、あなたは 'str.replace(/ <\/?[^>)+(> | $)/ g、" "' –

答えて

1

:この方法で正規表現を使用して

var text = 'abcd efg hijkl <span class="skipMe">xxx</span> nop qrst uv wxyz.' 
 

 
console.log(
 
    text.split(/<span.*?<\/span>/) 
 
)

0
console.log('abcd efg hijkl <span class=\'skipMe\'>xxx</span> nop qrst uv wxyz.'.replace(/<(|\/)span[^>]*>/g, '')); 

//OR variant #2 

console.log('abcd efg hijkl <span class=\'skipMe\'>xxx</span> nop qrst uv wxyz.'.replace(/\s<span.+span>?/g, '')); 

SEE

0

は不要に非常にナイーブとなりやすいです副作用。私の推奨は、組み込みのDOM APIを使用することです。

innerHTMLプロパティの値を入力文字列に設定し、問題の要素のラッパー要素を照会し、問題の要素を削除してからinnerHTMLプロパティの値を返します。

ここでは一例です。このアプローチの

const input = "abcd efg hijkl <span class='skipMe'>xxx</span> nop qrst uv wxyz."; 
 

 
const func = input => { 
 
    const wrapper = Object.assign(document.createElement('div'), { innerHTML: input }); 
 
    wrapper.querySelector('.skipMe').remove() 
 
    return wrapper.innerHTML; 
 
}; 
 

 
console.log(func(input));

1つの警告は、HTMLがパーサーに渡されるということですので、HTMLが有効でない場合、scary things will happen

関連する問題