我正在尝试在正则表达式字符串中捕获第二个匹配项。
取域名:
https://regexrocks.com/my/socks/off
替换.com
$this.val($this.val().replace(/(([^.]*.)[^]?.[^\/]?)/, ''));
使用正则表达式:
(([^.]*.)[^]?.[^/]?)
将第一场比赛替换为第二场比赛:/my/socks/off
。
https://regex101.com/r/46BIqG/1
如何抓住第二场比赛?
答案 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)