Javascript正则表达式替换字母数字字符串之间的单个字符

Javascript regex replacement of single character between alphanumeric strings.

本文关键字:之间 字符串 单个 字符 数字字符 数字 正则表达式 替换 Javascript      更新时间:2023-09-26

我需要通过regex做一个字符串替换/替换,我只是不能弄清楚。

字符串格式如下:http[s]://assets.example.com/images/[8 or 9 alphanumberic chars]m/[ 8 or 9 different alphanumeric chars].jpg

我要替换的字符是两个字母数字字符串中间的m

这是我正在尝试做的一个例子。

http://assets.example.com/images/11233434m/23435436.jpg,我想把它变成http://assets.example.com/images/11233434l/23435436.jpg

我熟悉str.replace,我只是不能想出一个工作的正则表达式,而不替换不正确的字符(如example.com/中的最后一个m)

试着看看是否有帮助

var url = "http://assets.example.com/images/11233434m/23435436.jpg";
url.replace(/images'/([a-zA-Z0-9]{8,9})(m)'//, function(total, g1, g2) {
    //console.log(total, g1, g2);
    return 'images/' + g1 + "l/";
})

下面的代码应该可以工作:

var str1 = "http://assets.example.com/images/11233434m/23435436.jpg";
var patt = /(http:'/'/assets'.example'.com'/images'/[a-zA-Z0-9]{8,9})m('/[a-zA-Z0-9]{8,9}'.jpg)/;
var mats = patt.exec(str);
var str2 = mats[1]+"l"+mats[2];

逻辑很简单。因为[a-zA-Z0-9]{8,9}匹配8或9个字母数字字符,所以我代码中的正则表达式patt匹配的字符串与您描述的完全相同。它还捕获在不正确的m之前的字符串部分和在它之后的字符串部分。然后我们只是连接第一部分,一个l和第二部分。

我相信这是你想要的

  • 查找(https?:'/'/assets'.example'.com'/images'/[a-zA-Z0-9]{8,9})m('/[a-zA-Z0-9]{8,9}'.jpg)
  • 替换为:$1l$2
  • 试试吧:http://regex101.com/r/oO4sO5/4

免费间隔:

(http                   #Open capture, "http"
s?:'/'/                 #Optional "s", required "://"
assets'.example'.com'/images'/   #literal portion
[a-zA-Z0-9]{8,9})       #8-or-9 alpha-num chars, end capture
m                       #"m"
('/                     #Start capture, "/"
(?:[a-zA-Z0-9]{8,9})'.jpg)   #8-or-9 alpha-num chars, ".jpg", end capture

请考虑收藏堆栈溢出正则表达式常见问题解答,以备将来参考。

下面是一个有效的正则表达式:

var str = 'http://assets.example.com/images/11233434m/23435436.jpg';
var replaced = str.replace(/(https?:'/'/assets'.example'.com'/images'/[a-zA-Z0-9]{8,9})m('/[a-zA-Z0-9]{8,9}'.jpg)/, '$1l$2')