-1

前のスタックオーバーフロー

この jquery ステートメントは domain.com を検索し、URL の末尾に ?parameter を追加します。?parameter が既に追加されている場合は追加されません。

問題: 私の現在の jquery は、domain.com ではなくすべての URL を変更します。これは、私が使用したい正規表現ステートメントであり、動作することがテストされています。ただし、実装時には何も追加されません。どんな助けでも大歓迎です!

使用したい正規表現:

\b(https?://)?([a-z0-9-]+\.)*domain\.com(/[^\s]*)?

正規表現フィドル

便宜上JSFiddle

変更するコード

<div id="wp-content-editor-container" class="wp-editor-container"><textarea class="wp-editor-area" rows="10" tabindex="1" cols="40" name="content" id="content">&lt;a title="Link to test domain" href="http://www.domain.com"&gt;Link to google&lt;/a&gt;
&lt;a href="http://www.google.com/directory/subdirectory/index.html"&gt;This is another link&lt;/a&gt;
&lt;a href="http://domain.com/directory/index.html"&gt;This is a 3rd link&lt;/a&gt;

&lt;a href="http://www.domain.com/subdir?parameter"&gt;this url already has parameters&lt;/a&gt;</textarea></div>

現在のjqueryステートメント

var url = 'www.domain.com';
var append = '?parameter';

$(".wp-editor-area").each(function() {
    $(this).text(urlify($(this).text()));
});

function urlify(text) {
    var urlRegex = /(\b(https?|ftp|file):\/\/[www.domain.com][-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
    return text.replace(urlRegex, function(url) {
        // if the url does not contain append, concat append to the URL
        if (url.indexOf(append) == -1) {
            return url + append;
        }
        return url;
    });

}

電流出力

    <a title="Link to test domain" href="http://www.domain.com?parameter">Link to google</a>
<a href="http://www.google.com/directory/subdirectory/index.html?parameter">This is another link</a>
<a href="http://domain.com/directory/index.html?parameter">This is a 3rd link</a>
4

1 に答える 1

2

このコードをテストしてください - 必要なもの(または少なくとも開始点) である必要があります>>

function urlify(text) {
  var append = '?parameter';
  text = text.replace(/("(?:(?:https?|ftp|file):\/\/)?(?:www.|)domain.com(?:\/[-a-z\d_.]+)*)(\?[^"]*|)(")/ig,
    function(m, m1, m2, m3) {
      return ((m1.length != 0) && (m2.length == 0)) ? m1 + append + m3 : m;
    });
  return text;
}

$(".wp-editor-area").each(function() {
  this.innerHTML = urlify(this.innerHTML);
});
于 2012-07-20T12:24:42.677 に答える