0

JavaScript では、正規表現パターンと文字列が与えられます。

var pattern = '/this/[0-9a-zA-Z]+/that/[0-9a-zA-Z]+';
var str = '/this/12/that/34';

以下を含む配列を返す方法:

['12', '34']

以下は、入力文字列全体に一致するため、全体として返します。

var res1 = '/this/12/that/34'.match(/\/this\/[0-9a-zA-Z]+\/that\/[0-9a-zA-Z]+/));

以下は、入力文字列のすべての「部分」に一致します。

var res2 = '/this/12/that/34'.match(/[0-9a-zA-Z]+/g));
4

2 に答える 2

2

キャプチャ グループを使用します。

var res1 = '/this/12/that/34'.match(/\/this\/([0-9a-zA-Z]+)\/that\/([0-9a-zA-Z]+)/);

3 つの要素を含む配列を取得します。

  1. 試合全体。

  2. 12

  3. 34

.slice(1)そして、最初の要素を削除するために使用できます:

var res1 = '/this/12/that/34'.match(/\/this\/([0-9a-zA-Z]+)\/that\/([0-9a-zA-Z]+)/).slice(1);
于 2013-09-30T11:51:13.103 に答える
2

正規表現では、括弧を使用して「キャプチャ グループ」を区切ることができます。これらは、マッチから取得できます。また、正規表現は JavaScript のリテラルであり、引用符で囲んではならず (代わりにスラッシュが使用されます)、適切にエスケープする必要があることにも注意してください。

たとえば、次の正規表現を使用する場合:

var pattern = /\/this\/([0-9a-z]+)\/that\/([0-9a-z]+)/i;
// that final "i" avoids the need to specify A-Z, it makes the regex ignore case

これを文字列と照合すると、次のようになります。

var match = str.match(pattern);

結果は次のようになります。

["/this/12/that/34","12","34"]

配列の最初のインデックスは常に一致全体になることに注意してください。あなたは.shiftそれをスライスするために使用することができます:

match.shift();

match次のようになります。

["12","34"]
于 2013-09-30T11:52:21.067 に答える