0

我对正则表达式很陌生,并且正在尝试学习它,但我发现它很混乱。

我的目标是取出以某些特定字符开头的字符串。

我想在之后归还所有东西/images

示例:网址: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);

jsFiddle

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

您可以使用substringindexOf实现您想要做的事情:

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

With regex, then this should do:

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

For learning purpose, I also put here some description as well:

^ : start of string
$ : end of string
(https:http) : this will make regx work with both protocol
:// : this is ://
[^/]* : this is domain
(.*) : this is the remain path

In regex, you put the expression inside ( and ) to make it appear in returned value.

Hope this help.

于 2013-08-09T04:28:52.300 回答