REGEX需要在字符串后查找数字但不包括搜索的字符串

时间:2016-12-02 21:53:59

标签: javascript regex

嘿我正在尝试分割一串单词,这样我就能抓住图像的全部大小。

现在我有“/perch/resources/res-img13-w368h368.jpg”

我想删除img13之后的'-w368h38',所以它会变成“/perch/resources/res-img13.jpg”

我花了一段时间试图找出正则表达式,但我对正则表达式来说还是新手,并且我真的不知道我在做什么。 任何帮助都是极好的!

2 个答案:

答案 0 :(得分:0)

问题和解释相矛盾。我会解释一下。

var str = "/perch/resources/res-img13-w368h368.jpg";    
var regexResult = str.exec(/(.*)(-w\d*h\d*)(.*)/);
var result = regexResult[1] + regexResult[3];

部分(.*)表示匹配任何字符并将它们分组。分组(用括号括起部分)使该部分可以在以后访问。

(-w\d*h\d*)将一个文字字符串组成" - "," w"字符" - "之后的字符," w",字符" h"之后的无数字或无限数字再一次,没有或无数的数字。

最终(.*)将字符串的其余部分分组。

当调用函数exec时,结果是一个包含我们指定的组的数组:

[
  "/perch/resources/res-img13-w368h368.jpg", //First element is the whole match 
  "/perch/resources/res-img13", //Our first group
  "-w368h368", //Our second group
  ".jpg" //Our final group
] 

答案 1 :(得分:0)

试试这个正则表达式^((?:\/.+)+\/.+)-w(\d+)h(\d+)(\..+)并告诉我这是否是您正在搜索的内容。第1组匹配/perch/resources/res-img13,第2组匹配宽度,第3组匹配高度,第4组匹配扩展名。

var input = "something format_abc";
var regex = /^((?:\/.+)+\/.+)-w(\d+)h(\d+)(\..+)/g;
var match = regex.exec(input);
console.log("WIDTH: " + match[2] + "px , HEIGHT: " + match[3] + "px");