使用正则表达式获取Javascript字符串中每个下划线后的每个“单词”
我想提取Javascript字符串中下划线后面的每个字母数字字符块。我目前使用字符串方法和正则表达式的组合来实现它,如下所示:使用正则表达式获取Javascript字符串中每个下划线后的每个“单词”,javascript,regex,Javascript,Regex,我想提取Javascript字符串中下划线后面的每个字母数字字符块。我目前使用字符串方法和正则表达式的组合来实现它,如下所示: var string = "ignore_firstMatch_match2_thirdMatch"; var firstValGone = string.substr(string.indexOf('_')); // returns "_firstMatch_match2_thirdMatch" var noUnderscore = firstValGone.
var string = "ignore_firstMatch_match2_thirdMatch";
var firstValGone = string.substr(string.indexOf('_'));
// returns "_firstMatch_match2_thirdMatch"
var noUnderscore = firstValGone.match(/[^_]+/g);
// returns ["firstMatch", "match2" , "thirdMatch"]
我想知道是否有一种纯粹使用正则表达式的方法?我能做到的最好的事情是:
var string = "ignore_firstMatch_match2_thirdMatch";
var matchTry = string.match(/_[^_]+/g);
// returns ["_firstMatch", "_match2", "_thirdMatch"]
但它也返回前面的下划线。鉴于你不能在JS中使用lookbehinds,我不知道如何匹配后面的字符,但排除下划线本身。这可能吗?因为JS不支持lookbehind,所以我能想到的唯一方法就是使用这样的组
正则表达式:[^]+并使用\1或$1捕获组
var myString=ignore\u firstMatch\u match2\u thirdMatch;
var myRegexp=/[^]+/g;
match=myRegexp.execmyString;
比赛时!=空的{
document.getElementByIdmatch.innerHTML+=+match[0];
match=myRegexp.execmyString;
}
由于JS中不支持lookbehind,所以我能想到的唯一方法就是使用这样的组
正则表达式:[^]+并使用\1或$1捕获组
var myString=ignore\u firstMatch\u match2\u thirdMatch;
var myRegexp=/[^]+/g;
match=myRegexp.execmyString;
比赛时!=空的{
document.getElementByIdmatch.innerHTML+=+match[0];
match=myRegexp.execmyString;
}
您可以使用捕获组[^]+并在循环中使用,同时将捕获的值推送到数组中: 变量re=/[^]+/g; var str='ignore_firstMatch_match2_thirdMatch'; var-res=[]; 而m=re.execstr!==空的{ res.pushm[1]; }
document.body.innerHTML= 您可以使用捕获组[^]+并在循环中使用,同时将捕获的值推送到数组中:
string str = "ignore_firstMatch_match2_thirdMatch";
IEnumerable<string> matches = str.Split('_').Skip(1);
变量re=/[^]+/g;
var str='ignore_firstMatch_match2_thirdMatch';
var-res=[];
而m=re.execstr!==空的{
res.pushm[1];
}
document.body.innerHTML= 为什么你认为你需要正则表达式?简单的拆分即可完成此任务:
string str = "ignore_firstMatch_match2_thirdMatch";
IEnumerable<string> matches = str.Split('_').Skip(1);
为什么你认为你需要正则表达式?简单的拆分即可完成此任务:
只需使用捕获组[^]+并在循环中使用RegExpexec。为所有回复干杯。我没有尝试过在组中循环,因为我认为可能有一种“更干净”的方法可以做到这一点,所以感谢您让我知道循环和组是可行的方法。只需使用捕获组[^]+并在循环中使用RegExpexec。为所有回复干杯。我没有尝试过通过组循环,因为我认为可能有一种“更干净”的方法来实现,所以感谢您让我知道循环和组是一种方式。我并不认为我需要循环,我知道我不需要。我正试图更好地使用正则表达式。我并不认为我需要正则表达式,我知道我不需要。我正试图更好地使用正则表达式。