2

「j_id0:j_id11:i:f:pb:d:MyFieldName.input」(引用符なし)を含む変数があります。

ここで、「MyFieldName」をキャプチャしたいと思います。

私はこれを持っていました:

var test = "j_id0:j_id11:i:f:pb:d:MyFieldName.input";
var testRE = test.match(":(.*).input");
console.log("old text: " + test);
console.log("new text: " + testRE[1]);

これはこれを出力します:

old text: j_id0:j_id11:i:f:pb:d:MyFieldName.input
new text: j_id11:i:f:pb:d:MyFieldName

だから私が必要なのは、最後の出現":" と ".input"の間のすべてが欲しいと彼に伝えることです.

これを実現する方法はありますか?

ありがとう!

4

4 に答える 4

1

正規表現なしでこれを試すことができます:

var test = "j_id0:j_id11:i:f:pb:d:MyFieldName.input";
var fieldName = test.split(':').pop().split('.')[0];
于 2013-08-09T13:08:03.697 に答える
1

この正規表現は機能します:

.*:(.*)\.input
于 2013-08-09T13:08:24.277 に答える
0

正規表現の問題は、最初の に一致し、までの:すべてをキャプチャすることです。これを回避するには、との間のキャプチャに more を含めないようにすることができます。(.*).input:.input:

この正規表現はあなたのために働くはずです:

/:(\w+)\.input/

フィドル

var test = "j_id0:j_id11:i:f:pb:d:MyFieldName.input";
var testRE = test.match(/:(\w+)\.input/)
console.log("old text: " + test);
console.log("new text: " + testRE[1]); //MyFieldName

グループ 1 にはフィールド名が含まれます。

上記はうまくいくと思いますが、文字以上が必要な場合は\w、代わりにこれを使用して、「...:My.Field.Name.input」などを許可し、「My.Field.Name」をキャプチャできます。

/:([^:]+)\.input/
于 2013-08-09T13:07:02.800 に答える