RegEx之后的JavaScript匹配子字符串

问题描述 投票:8回答:6

我有一个类似的字符串

something30-mr200

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

任何帮助将是欣赏它。

javascript regex string substring
6个回答
18
投票

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

像这样的东西可以做到这一点:

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

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

要么

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

4
投票

为什么不简单:

-mr(\d+)

然后获取捕获组的内容?


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"

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;

0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.