0

私は正規表現に非常に慣れていないため、学習しようとしていますが、かなり混乱しています。

私の目標は、特定の文字で始まる文字列のチャンクを取り出すことです。

後は全部返してほしい/images

例: URL:https://www.google.com/images/srpr/logo4w.png

返品したいもの:/images/srpr/logo4w.png

これが私の試みです:

var src = document.getElementById('image').getAttribute("src"),
    regex = src.match(/images/i);

console.log(regex);

jsフィドル

4

4 に答える 4

2

以下の正規表現を使用します。

regex = src.match(/.images.*/i);
console.log(regex[0]);

このフィドルのデモを確認してください

編集

実際、正規表現の先頭のドットは任意の文字に一致するため、この場合はスラッシュに置き換えることもできます。(スラッシュは特殊文字なのでバックスラッシュでエスケープ)

regex = src.match(/\/images.*/i);
于 2013-08-09T04:21:20.703 に答える
2

あなたも使えるsplit()!このような単純なものでは、正規表現を実行する必要はまったくありません。

string = src.split(/images/)[1];

src の「/images/」文字列の後のすべてを分割します。

デモ: http://jsfiddle.net/shannonhochkins/T74L7/11/

于 2013-08-09T04:21:27.830 に答える
2

substringandを使用しindexOfて、やろうとしていることを達成できます。

var str = "https://www.google.com/images/srpr/logo4w.png";
console.log( str.substring( str.indexOf("/images" ) ) );

最初に「/images」の出現を見つけ、indexOfそれ以降を使用してすべてを取得しますsubstring

于 2013-08-09T04:21:58.813 に答える
1

正規表現を使用すると、次のようになります。

href.match(/^(https|http):\/\/[^\/]*(.*)$/)[2]

学習目的で、ここにもいくつかの説明を入れました。

^ : 文字列の開始
$ : 文字列の終了
(https:http) : これにより、regx が両方のプロトコルで動作するようになります
:// : これは ://
[^/]* : これはドメイン
です (.*) : これはパスのまま

(正規表現では、式を中に入れて)、戻り値に表示させます。

この助けを願っています。

于 2013-08-09T04:28:52.300 に答える