0
<textarea name="test">
  test
  [url=http://test.com]test[/url]
  [url][img]http://test.com/test.jpg[/img][/url]
  test
</textarea>

に包まれているすべてのものを削除し、そのままにしておくにはどうすればよい[url][/url]です[url=][/url][img]

私が試したこと:

var value = $('textarea[name="test"]').val();
value = value.replace(/\[url=(.+?)\](.+?)\[\/url\]/g, '');
value = value.replace(/\[url=(.+?)\]/g, '');
value = value.replace('[url]', '');
value = value.replace('[\/url]', '');
$('textarea[name="test"]').val(value);

期待される出力:

<textarea>
  test

  [img]http://test.com/test.jpg[/img]
  test
</textarea>
4

1 に答える 1

1

これで整理できます。1つの正規表現を置き換えるだけで実現できます。

var value = $('textarea[name="test"]').val();
value = value.replace(/\[\/?url([^\]]+)?\]/g, '');
$('textarea[name="test"]').val(value);

jsFiddleデモはこちら

本質的に起こっているのは、正規表現が角括弧で始まる文字列を探すことです。これは、閉じが[続く場合と続かない場合がありますが、その後に続きます。その後、。に遭遇するまで一致し続け、勝ちます。その時点で何が見つかるか気にしないでください。そうすれば、次のすべてに一致するものを取得できます。/url]

  • [url]
  • [/url]
  • [url=http://www.google.com]
  • [url hello world this is nice](本当に必要な場合:-P)

jQueryのフィールド名をtextarea「text」から「signature」に変更しましたが、2番目のtextareaを含むHTMLを投稿したことはありません-同じものを使用しました-上記のコードで「test」。

お役に立てば幸いです。

于 2013-02-23T09:17:21.317 に答える