9

次のような文字列があります

something30-mr200

(基本的に # の後に mr が続きます) の後にすべてを取得したいと思いますmr*常に-mr

どんな助けでも感謝します。

4

6 に答える 6

19

Bart が提供したような正規表現を使用できますが、replace ではなく match を使用することをお勧めします。これは、一致が見つからない場合、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 に答える