RegEx之后的JavaScript匹配子字符串

时间:2009-10-14 20:24:35

标签: javascript regex string substring

我有一个类似

的字符串
something30-mr200

我想在mr之后得到所有内容(基本上是#后跟先生)*总是会有-mr

任何帮助都会受到赞赏。

6 个答案:

答案 0 :(得分:18)

你可以使用像Bart给你的正则表达式,但我建议使用匹配而不是替换,因为如果找不到匹配,结果是使用replace时的整个字符串,而使用match时为null,似乎更符合逻辑。 (作为一般而言)。

这样的事情可以解决问题:

functiong getNumber(string) {
    var matches = string.match(/-mr([0-9]+)/);
    return matches[1];
}
getNumber("something30-mr200");

答案 1 :(得分:4)

var result = "something30-mr200".split("mr")[1];

var result = "something30-mr200".match(/mr(.*)/)[1];

答案 2 :(得分:4)

为什么不简单:

-mr(\d+)

然后获取捕获组的内容?

答案 3 :(得分:2)

怎么样:

function getNumber(input) { // rename with a meaningful name 
    var match = input.match(/^.*-mr(\d+)$/);

  if (match) { // check if the input string matched the pattern
    return match[1]; // get the capturing group
  }
}

getNumber("something30-mr200"); // "200"

答案 4 :(得分:1)

这可能对您有用:

// Perform the reg exp test
new RegExp(".*-mr(\d+)").test("something30-mr200");
// result will equal the value of the first subexpression
var result = RegExp.$1;

答案 5 :(得分:0)

如何找到-mr的位置,然后从那里获取子串+ 3?

这不是正则表达式,但根据您的描述似乎有效吗?