通过正则表达式匹配到JavaScript替换字符串

时间:2017-05-21 11:48:32

标签: javascript regex

我的字符串就像

  

5blog5sett5ings5[5slider5][5][5ima5ge5]

我喜欢通过正则表达式将任何数字与末尾的第二个括号匹配。

对于这种情况,我的目标数字为5 [5]

我喜欢选择像图案之前的位置 5blog5sett5ings5[5slider5][以及][5ima5ge5]

之类的模式之后

我会将它用于JavaScript字符串替换。文本可以不同,但​​前后模式就是这样。 For better understanding see the image.

enter image description here

我试过像

这样的东西
(?<=.+[.+?][)\d(?=][.+?])

但没有用。

3 个答案:

答案 0 :(得分:1)

我想你可以使用:

\[(\d+)\][^\]]+]$

Regex Demo & Explanation

var myString = "5blog5sett5ings5[5slider5][5][5ima5ge5]";
var myRegexp = /\[(\d+)\][^\]]+]$/mg;
var match = myRegexp.exec(myString);
console.log(match[1]);

答案 1 :(得分:1)

我认为您可以使用lookahead来检查是否有]还有一个[ ],直到结束。

\d+(?=]\[[^\]]*]$)

See demo at regex101

(请注意,js正则表达式中你没有尝试过后悔)

答案 2 :(得分:0)

使用此:

^.*\[(\d*)\]\[[^\]]*\]$

其中:

  • ^是字符串的开头
  • .*表示任何字符
  • \[\]匹配文字方括号
  • (\d*)是您想要匹配的内容
  • [^\]]*是最后几个括号的内容
  • $是字符串的结尾

查看示例:

var str = "5blog5sett5ings5[5slider5][5][5ima5ge5]";
var res = str.match(/^.*\[(\d*)\]\[[^\]]*\]$/);
console.log(res[1])