0

いくつかの標準文字列 (実際にはリンク ID) で単語をキャッチする必要がありますが、すべての文字列をキャッチする必要はありません。

これ

(?:color_form_submit_)(\w+)

ルビーで動作し、キャッチyellowしますcolor_form_submit_yellow

しかし、JS ではすべての文字列をキャッチしているように見えますが、その理由がわかりません。

4

4 に答える 4

4

エレガンスのためだけに1つの正規表現を実現したかった

エレガンスが必要な場合は、このようなものを試すことができます

var str = 'color_form_submit_yellow',
    reg = /color_form_submit_(\w+)/;

(str.match(reg) || [])[1]; // "yellow"

そしてあなたも持っています

('fail'.match(reg) || [])[1]; // undefined

これは次の理由で機能します。

[1, 2, 3] || []; // [1, 2, 3]
null      || []; // []
array[1] === (array)[1];
于 2013-06-11T12:38:29.833 に答える
1

最初のキャプチャ グループとの一致を明示的に探す必要があります。

var myregexp = /color_form_submit_(\w+)/;
var match = myregexp.exec(subject);
if (match != null) {
    result = match[1];
}
于 2013-06-11T12:15:57.480 に答える
0
var match = string.match(/color_form_submit_(\w+)/);
match && match[1];

JavaScriptで取得できる最短の(不必要に難読化された)方法です。

于 2013-06-11T12:30:44.533 に答える