我有一个像这样的字符串(url):
https://8.random.url.com/g/DFGTER5675/test1/undefined/codec/
这是我的正则表达式:
/https\:\/\/(?:.*)\/g\/(?:.*)\/(?:.*)\/(.*)\/codec\/(?:.*)/gi
我的代码:
var string = "https://8.random.url.com/g/DFGTER5675/test1/undefined/codec/";
var myRegexp = /https\:\/\/(?:.*)\/g\/(?:.*)\/(?:.*)\/(.*)\/codec\/(?:.*)/gi
var match = string.replace(myRegexp, "OMEGA3");
当我console.log(match)
时,它只返回" OMEGA3"。我想要的只是我的字符串" undefined"取而代之的是" OMEGA3"。我究竟做错了什么?感谢。
答案 0 :(得分:0)
为什么不使用/undefined/gi
var string = "https://8.random.url.com/g/DFGTER5675/test1/undefined/codec/";
var myRegexp = /(https\:\/\/.*?\/.*?\/.*?\/.*?\/).*?(\/.*?\/)/gi
var match = string.replace(myRegexp, "$1OMEGA3$2");
console.log(match)
答案 1 :(得分:0)
您可以向后使用捕获组。您应该捕获要保留的模式部分,而不是要替换的部分。然后使用$1
,$2
等将这些内容复制到替换。
您还有几个根本不需要的非捕获组。
var myRegexp = /(https:\/\/.*\/g\/.*\/).*(\/codec\/)/gi
var match = string.replace(myRegexp, "$1OMEGA3$2");
答案 2 :(得分:0)
您可以将此正则表达式用于捕获组和反向引用:
url = url.replace(/(https?:\/\/[^\/]*\/g\/[^\/]*\/[^\/]*\/).*(\/codec\/)/gi, '$1OMEGA3$2');