0

現在のドメインに準拠するリンクのみを解析する正規表現を作成したいと考えています。Javascript 正規表現オブジェクト内で使用できる {hostname} のようなものがあるかどうかを知りたいので、現在のページ固有のドメインのリンクのみに検索をロックします。

たとえば、ドメインが www.domain.com の場合、その特定のドメインで始まるリンクのみが検索されます。ドメインが anotherdomain.com の場合、その特定のドメインで始まるリンクのみが検索されます。私の正規表現はより複雑ですが、現在のドメインに置き換えられるある種のグローバル変数を配置できるようにしたいと考えています。

4

2 に答える 2

2

ホスト名はから取得できますwindow.location.hostname

次に、ホスト名の潜在的な特殊文字をエスケープする必要があります。

ホスト名には通常.、正規表現の特殊文字であるものが含まれますが、特殊文字である可能性のあるものを含めることも-できます。

おそらく、防御的なプログラミングに従事し、正規表現の特殊文字である可能性のあるものの多くが実際に表示されるべきではない場合でも、それらをすべてエスケープするのが最善です。Javascript正規表現で使用するエスケープ文字列から、次の関数を使用できます。

function escapeRegExp(str) {
  return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}

そして、あなたはこれを行うことができます:

var regexpFragment = escapeRegExp(window.location.hostname);
于 2012-07-15T18:44:20.670 に答える
2

Location オブジェクトを介して現在のページのホスト名を取得できます。

var hostname = window.location.hostname;

そして、その変数を正規表現に連結することにより、その変数を使用して正規表現を作成できます。

var re = new RegExp("<start of your regex>" + hostname + "<end of your regex>");
于 2012-07-15T18:36:21.253 に答える