得到正则表达式字符串的第二场比赛

时间:2017-03-10 23:26:24

标签: javascript regex replace

我正在尝试在正则表达式字符串中捕获第二个匹配项。

取域名:

https://regexrocks.com/my/socks/off

替换.com

之后的所有内容

$this.val($this.val().replace(/(([^.]*.)[^]?.[^\/]?)/, ''));

使用正则表达式:

(([^.]*.)[^]?.[^/]?)

将第一场比赛替换为第二场比赛:/my/socks/off

https://regex101.com/r/46BIqG/1

如何抓住第二场比赛?

3 个答案:

答案 0 :(得分:0)

你的正则表达式用空字符串替换第一个匹配;留下原始字符串的其余部分。

"https://regexrocks.com/my/socks/off".match(/(.*\.com)(.*)/);

将返回捕获组的数组,索引1处的组1和索引2处的组2。

即。第1组

"https://regexrocks.com/my/socks/off".match(/(.*\.com)(.*)/)[1]; //https://regexrocks.com

或第2组

"https://regexrocks.com/my/socks/off".match(/(.*\.com)(.*)/)[2]; ///my/socks/off

答案 1 :(得分:0)

看起来你只需要访问match()而不是replace()的结果的索引0:

url.match(/(([^.]*.)[^]?.[^/]?)/)[0]
// Should return "https://regexrocks.com"

顺便说一句,因为你刚刚使用了一个URL,你可以使用锚标记<a>做另一个技巧:

var url = document.createElement('a');
url.href = 'http://www.example.com/path/to/something';
console.log(url.origin); // prints "http://www.example.com"

详情:

https://developer.mozilla.org/en-US/docs/Web/API/Location#Examples

答案 2 :(得分:0)

试试这个:

\w+:\/\/([\w|\.]+)

code for example