1

申し訳ありませんが、この質問がstackoverflowで解決されていないとは信じられませんが、多くの検索を行ってきましたが、解決策が見つかりません.

この方法で正規表現を使用して HTML コードを変更したい:

testing <a href="url">anchor</a>

testing anchor

DOM関数を使用せずにテキストコードのリンクを解除したいだけで、コードはドキュメントにない文字列にあり、他のタグを削除したくありませんa

4

4 に答える 4

5

本当に DOM 関数を使いたくないのなら (なぜ?) 使うかもしれません

str = str.replace(/<[^>]*>/g, '')

>より複雑な HTML を持っていないという確信がある場合は使用できますが、ネストされたタグや属性など、多くの場合に失敗します。より複雑な正規表現を使用して問題の一部を修正することもできますが、一般的なケースでは、正規表現はこの仕事に適したツールではありません。

以外のタグを削除したくない場合は、次のaようにします。

str = str.replace(/<\/?a( [^>]*)?>/g, '')

これは変わります

<a>testing</a> <a href="url"><b>a</b>nchor</a><div>test</div><aaa>E</aaa>

testing <b>a</b>nchor<div>test</div><aaa>E</aaa>
于 2013-05-24T11:18:17.050 に答える
4

将来の視聴者のために、正規表現のみが必要であることは知っています。DOM メソッドを使用した簡単なソリューションを次に示します。

var a = document.createElement("div");
a.innerHTML = 'testing <a href="url">anchor</a>';
var wordsOnly = a.textContent || a.innerText; 

これは複雑なユースケースでは失敗せず、ネストされたタグを許可し、何が起こっているかは完全に明らかです:

  • おいブラウザ!要素を作成する
  • そのHTMLをそこに入れます
  • テキストだけ返してください、それが今私が欲しいものです。

ノート:

作成している要素は、どこにも追加していないため、実際の DOM には追加されず、非表示のままです。これがどのように機能するかを説明するフィドルを次に示します。

于 2013-05-24T11:22:37.790 に答える
0

前述のとおり、HTML を正規表現で解析することはできません。主な理由は、HTML 要素がネストされ、正規表現がそれを処理できないことです。

そうは言っても、私が言及するいくつかの制限により、次のことができます:

string.replace (/(\b\w+\s*)<a\s+href="([^"]*)">(.*)<\/a>/g, '$1 $3')

hrefこれには、タグの前に単語が必要であり、単語とタグの間のスペースはオプションであり、タグで指定された以外の属性はなく<a>、 と の間は何でも受け入れます<a>

于 2013-05-24T11:29:23.530 に答える
0

文字列からDOMオブジェクトを作成し、DOMメソッドを使用して解析することができます.DOMオブジェクトをドキュメントに追加する必要はありません.

于 2013-05-24T12:07:33.790 に答える