9

我有一个看起来像的字符串

something30-mr200

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

任何帮助将不胜感激。

4

6 回答 6

19

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

像这样的东西可以解决问题:

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

于 2009-10-14T20:37:41.440 回答
4
var result = "something30-mr200".split("mr")[1];

或者

var result = "something30-mr200".match(/mr(.*)/)[1];
于 2009-10-14T20:32:09.807 回答
4

为什么不简单:

-mr(\d+)

然后获取捕获组的内容?

于 2009-10-14T20:32:25.030 回答
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"
于 2009-10-14T20:36:52.480 回答
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;
于 2009-10-14T20:49:16.393 回答
0

找到-mr的位置,然后从那里得到子字符串+ 3呢?

这不是正则表达式,但根据您的描述似乎可以工作?

于 2009-10-14T20:28:23.043 回答