2

「add_dinner」、「add_meeting」、「add_fuel_surcharge」という文字列があり、「add_」が前に付いている文字 (dinner、meeting、fuel_surcharge) を取得したいと考えています。

[^a][^d]{2}[^_]\w+

これを試してみましたが、「add_dinner」でしか機能しません

[^add_]\w+

これは「add_fuel_surcharge」で機能しますが、「add_dinner」から「inner」を取ります

理解してください。

4

4 に答える 4

3

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

/^add_(\w+)$/

返された配列をチェックして、結果を確認します。

于 2012-09-01T07:12:33.590 に答える
1

JavaScript は後読みアサーションをサポートしていないため、キャプチャ グループを使用する必要があります。

var myregexp = /add_(\w+)/;
var match = myregexp.exec(subject);
if (match != null) {
    result = match[1];
}

[^add_]adまたはを除く単一の文字に一致する文字クラスです_。に適用するadd_dinnerと、最初に一致する文字はiで、\w+次に に一致しnnerます。

于 2012-09-01T07:12:33.200 に答える
0

、で_文字列をフィルタリングできますJavaScript for loop

var str = ['add_dinner', 'add_meeting', 'add_fuel_surcharge'];
var filterString = [];

    for(var i = 0; i < str.length; i ++){
        if(str[i].indexOf("_")>-1){
            filterString.push(str[i].substring(str[i].indexOf("_") + 1, str[i].length));
        }
    }
alert(filterString.join(", "));
于 2012-09-01T07:31:25.693 に答える
0

コンストラクトは[^...]、リストされているものを除く任意の 1 文字に一致します。その[^add_]ため、"a"、"d"、または "_" 以外の任意の 1 文字に一致します。

の後にビットを取得する場合は、次のように_します。

/add_(\w+_)/

括弧が式の一部を「キャプチャ」する場所。したがって、文字列から実際のテキストを取得するには:

var s = "add_meeting";
var result = s.match(/add_(\w+)/)[1];

これは、返された配列の 2 番目の要素を直接取得できるように、文字列が一致することを前提としています。これは、一致した「ミーティング」部分になり(\w+)ます。

match()一致しない文字列をテストする可能性がある場合は、結果がnull でないことをテストする必要があります。

(または、おそらく理解しやすいresult = "add_meeting".split("_")[1];:)

于 2012-09-01T07:15:02.843 に答える