57

私は、文字列として保存した以下の形式で ID を返す Google API を使用しています。URL の最後のスラッシュの後の文字のみに文字列をトリミングするために、javascript で正規表現を作成するにはどうすればよいですか。

var id = 'http://www.google.com/m8/feeds/contacts/myemail%40gmail.com/base/nabb80191e23b7d9'
4

8 に答える 8

93

正規表現を書かないでください!これは、代わりに文字列関数で行うのは簡単です:

var final = id.substr(id.lastIndexOf('/') + 1);

最終部分が常に 16 文字になることがわかっていると、さらに簡単になります。

var final = id.substr(-16);
于 2013-11-04T21:00:08.103 に答える
52

少し異なる正規表現のアプローチ:

var afterSlashChars = id.match(/\/([^\/]+)\/?$/)[1];

この正規表現を分解すると:

\/ match a slash
(  start of a captured group within the match
[^\/] match a non-slash character
+ match one of more of the non-slash characters
)  end of the captured group
\/? allow one optional / at the end of the string
$  match to the end of the string

次に[1]、一致内の最初のキャプチャされたグループを取得します

作業スニペット:

var id = 'http://www.google.com/m8/feeds/contacts/myemail%40gmail.com/base/nabb80191e23b7d9';

var afterSlashChars = id.match(/\/([^\/]+)\/?$/)[1];

// display result
document.write(afterSlashChars);

于 2013-11-04T21:02:58.833 に答える
26

他の誰かがこのスレッドに出くわし、単純な JS ソリューションを探している場合に備えて:

id.split('/').pop(-1)

于 2015-01-20T21:12:26.330 に答える
25

これはわかりやすい(?!.*/).+

説明させてください:

まず、末尾にスラッシュがあるものすべてに一致させましょう。 それは私たちが望まない部分です

.*/最後のスラッシュまですべてに一致

(?!)次に、 「これは要らない、捨てる」という「否定先読み」を行います。

(?!.*)これが「否定先読み」

これで、望まないものの隣にあるものは何でも喜んで取ることができます .+

/ をエスケープする必要があるかもしれません。

(?!.*\/).+

于 2016-02-22T06:56:19.957 に答える
9

これはうまくいくはずです:

last = id.match(/\/([^/]*)$/)[1];
//=> nabb80191e23b7d9
于 2013-11-04T20:59:24.953 に答える