0

オブジェクトに次の文字列があります。

<FLD>dsfgsdfgdsfg;NEW-7db5-32a8-c907-82cd82206788</FLD><FLD>dsfgsdfgsd;NEW-480e-e87c-75dc-d70cd731c664</FLD><FLD>dfsgsdfgdfsgfd;NEW-0aad-440a-629c-3e8f7eda4632</FLD>

this.model.get('value_long').match(/[<FLD>\w+;](NEW[-|\d|\w]+)[</FLD>]/g)

戻り値:

[";NEW-7db5-32a8-c907-82cd82206788<", ";NEW-480e-e87c-75dc-d70cd731c664<", ";NEW-0aad-440a-629c-3e8f7eda4632<"]

;前後を拾っている正規表現の何が問題なのですか<

ここに正規表現へのリンクがあります http://regexr.com?30k3m

更新しました:

これは私が返したいものです:

["NEW-7db5-32a8-c907-82cd82206788", "NEW-480e-e87c-75dc-d70cd731c664", "NEW-0aad-440a-629c-3e8f7eda4632"]

ここにJSfiddleがあります

http://jsfiddle.net/mwagner72/HHMLK/

4

1 に答える 1

2

角かっこは、ここでは望ましくない文字クラスを作成します。正規表現を次のように変更してみてください。

<FLD>\w+;(NEW[-\d\w]+)</FLD>

各マッチからキャプチャ グループを取得したいように見えるので、次のコードを使用して、キャプチャ グループを含む配列を作成できます。

var regex = /<FLD>\w+;(NEW[\-\d\w]+)<\/FLD>/g;
var match = regex.exec(string);
var matches = [];
while (match !== null) {
    matches.push(match[1]);
    match = regex.exec(string);
}

[<FLD>\w+;]あなたが実際にやりたいことはそれらすべてに一致すると思うとき、角括弧内の文字の1つに一致します。また、他の文字クラス については、文字クラスで既に暗示されているため、グループ内の代替にのみ使用する必要[-|\d|\w]があるため、 を削除できます。||

新しい正規表現の更新されたリンクは次のとおりです: http://jsfiddle.net/RTkzx/1

于 2012-04-11T17:14:30.833 に答える