如何获得前面有“”的字符;add_”;

How to get the characters preceded by "add_"

本文关键字:何获得 add 字符 前面      更新时间:2023-09-26

我有一个字符串"add_dinner"、"add_meeting"answers"add_fuel_surcharge",我想得到前面有"add_"(晚餐、会议、fuel_surcharce)的字符。

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

我试过这个,但它只适用于"add_dinner"

[^add_]'w+

这个适用于"add_fuel_surcharge",但从"add_dinner"中取"inner"

请帮我理解。

使用捕获组:

/^add_('w+)$/

检查返回的数组以查看结果。

由于JavaScript不支持后备断言,因此需要使用一个捕获组:

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

[^add_]是与除ad_之外的单个字符匹配的字符类。当应用于add_dinner时,它匹配的第一个字符是i,然后'w+匹配nner

[^...]构造匹配除列出的字符之外的任何单个字符。因此[^add_]匹配除"a"、"d"或"_"之外的任何单个字符。

如果你想在_之后检索比特,你可以这样做:

/add_('w+_)/

其中括号"捕获"了表达式内部的部分。因此,要从字符串中获取实际文本:

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

这假设字符串将匹配,这样您就可以直接获得返回数组中的第二个元素,该元素将是匹配('w+)的"会议"部分。

如果您可能要测试一个不匹配的字符串,则需要测试match()的结果是否为空。

(或者,可能更容易理解:result = "add_meeting".split("_")[1];

您可以通过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(", "));