src を含むイメージ タグがあり、Web サイトの URL を src の先頭に追加したいのですが、それが http:// で始まらない場合のみです。これまでのところ私は持っています
content.replace(/(<img *src=")(.*?)"/, '$1' + this.websiteUrl + '$2"');
しかし、http://ビットで始まらない方法がわかりません
src を含むイメージ タグがあり、Web サイトの URL を src の先頭に追加したいのですが、それが http:// で始まらない場合のみです。これまでのところ私は持っています
content.replace(/(<img *src=")(.*?)"/, '$1' + this.websiteUrl + '$2"');
しかし、http://ビットで始まらない方法がわかりません
ネガティブな先読みを使用します。
content.replace(/(<img *src=")(?!http:\/\/)(.*?)"/, '$1' + this.websiteUrl + '$2"');
@Guffaのパターンが答えです。いくつかの補足事項: マークアップが次のようになっていると仮定すると<img alt="foo" src="foo/bar.png" />
、パターンが機能しません。これを試してください:
content.replace(/(<img.+src=")(?!http:\/\/)(.*?)"/,'$1' + this.websiteUrl + '$2"');
また、この正規表現を DOM (フラグメント) 全体に使用する場合は、正規表現の代わりにパーサーを使用することも検討してください。X ブラウザーの例を次に示します。
テキストを追加するだけの場合は、正規表現は必要ありません。ちょうどどうですか:
if /^http:\/\//.test(img.src)
img.src = this.websiteUrl + img.src;
img
src属性を変更する要素はどこにありますか。
imgタグまたはその親の1つをオブジェクトとして持っていないが、HTMLが整形式である場合は、を使用しDOMParser
てそれらを取得できます。
var parser = new DOMParser();
var doc = parser.parseFromString(html, "text/XML");
var collection = doc.getElementsByTagName("img");
for (var i = 0; i < collection.length, i++){
if /^http:\/\//.test(collection[i].src)
collection[i].src = this.websiteUrl + collection[i].src;
}