js 正则表达式条件替换为捕获的组
js RegEx conditional replace with captured group
我正在尝试使用javascript中的正则表达式格式化网址...
输入:http://www.google.com
或https://www.yahoo.com
我正在使用这个正则表达式来捕获/(http':'/'/|https':'/'/){0,1}(.*)/
所以$1
说的是http
还是https
,$2
URL的其余部分......
现在我想用 1
替换 http
,用 2
替换https
,以便输出应如下所示:
1www.google.com
和2www.yahoo.com
我使用了下面的代码,但它不起作用...
var url = "http://www.microsoft.com";
url.replace(/(http':'/'/|https':'/'/){0,1}(.*)/, ("$1"=="http://"?"1":"2")+"$2");
// output: 2www.microsoft.com
url.replace(/(http':'/'/|https':'/'/){0,1}(.*)/, ("$1"=="http://")+"$2");
// output: falsewww.microsoft.com
有人知道如何做到这一点吗...?? 谢谢...
使用正则表达式的解决方案
var url1= 'http://www.google.com';
var url2= 'https://www.yahoo.com';
url1.replace(/(http':'/'/|https':'/'/){0,1}(.*)/, function (g1,g2,g3) {
var prefix ='';
if(g2 == 'https://') {
prefix = '2'
} else{
prefix='1'
}
return prefix + g3
})
//url1.replace(...) //"1www.google.com"
//url2.replace(...) //"2www.yahoo.com"
您使用的正则表达式不好:它可以匹配字符串中间的http,并且即使不需要,它也尝试匹配整个字符串
改用这个
url.replace(/^http(s)?:'/'//, function(match, secure) {
return secure ? "2" : "1"
})
url.replace('https','2').replace('http','1')
不知道你为什么要这样做
url.replace(/(http':'/'/|https':'/'/){0,1}(.*)/,function($1, $2, $3) {
if($2 == 'https://') {
return "2" + $3
} else {
return "1" + $3
}
});
解释 - 替换功能如何与正则表达式配合使用
replace(<RegEx>, handler)
参数 - $1, $2, $3 ...是正则表达式的结果。正则表达式模式中的每个捕获组都可以使用 $N 表示法在替换字符串中使用,其中"N"是捕获组的索引:
url.replace(/(http':'/'/|https':'/'/){0,1}(.*)/, ("$1"=="http://"?"1":"2")+"$2");
应该可以做到这一点,而无需引入 lambda 函数,并且对现有代码进行最少的修改。 正则表达式的问题在于您捕获了://
而不是与之进行比较,并且"http://" == "http"
将始终评估为 false。
相关文章:
- 正则表达式条件来删除元素
- 较短的正则表达式,按2个条件拆分,外部有空格
- JavaScript正则表达式多重条件
- 为什么'我的条件语句使用javascript中的正则表达式
- Javascript 中的正则表达式:当满足条件时,将减号替换为逗号+减号
- 正则表达式.在满足条件之前,避免匹配字符串
- 单个正则表达式,用于获取具有多个条件的多个模式
- Javascript 正则表达式条件语句,当在字符串中检测到两个相同字符时
- 用于验证 JavaScript 中的条件的正则表达式
- 如何为此条件编写正则表达式
- 如何在 JavaScript 中编写条件正则表达式
- 使用 javascript 正则表达式解析以 “$” 开头的字符串和其他条件
- 如何创建具有 2 个可能条件的正则表达式
- 在正则表达式中指定复杂条件
- 为什么正则表达式模式不符合 javascript 数据类型的条件
- javascript正则表达式匹配字符串条件,包括特殊字符
- 正则表达式有条件地去除 HTML 标记内容
- 使用or组合两个正则表达式条件
- js 正则表达式条件替换为捕获的组
- JavaScript中的正则表达式条件if-then