Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用正则表达式获取Javascript字符串中每个下划线后的每个“单词”_Javascript_Regex - Fatal编程技术网

使用正则表达式获取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.

我想提取Javascript字符串中下划线后面的每个字母数字字符块。我目前使用字符串方法和正则表达式的组合来实现它,如下所示:

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。为所有回复干杯。我没有尝试过通过组循环,因为我认为可能有一种“更干净”的方法来实现,所以感谢您让我知道循环和组是一种方式。我并不认为我需要循环,我知道我不需要。我正试图更好地使用正则表达式。我并不认为我需要正则表达式,我知道我不需要。我正试图更好地使用正则表达式。