Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.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_String - Fatal编程技术网

Javascript 从仅用逗号分隔的字符串中获取子字符串

Javascript 从仅用逗号分隔的字符串中获取子字符串,javascript,regex,string,Javascript,Regex,String,如果我有一根长绳子 871858444919630000,2499010188282898840000,3,1889140988892120000,410887205511293690000,18,42 我可以得到 8718584449、10218828289、8914098889、8720551129 通过循环,如何获取子字符串 19630000,24990 840000,3,18 2120000,4108 3690000,18,42 从那根长绳子上 基本上,对于每4个数字,仅当我知道4个数字

如果我有一根长绳子

871858444919630000,2499010188282898840000,3,1889140988892120000,410887205511293690000,18,42

我可以得到

8718584449、10218828289、8914098889、8720551129

通过循环,如何获取子字符串

19630000,24990
840000,3,18
2120000,4108
3690000,18,42

从那根长绳子上

基本上,对于每4个数字,仅当我知道4个数字子串的第一个数字时,如何动态地获得第2个、第3个和第4个数字?例如,如果我没有10218828289,那么我不想得到840000,3,18,也不想使用正则表达式

var s = '8718584449,19630000,24,990,10218828289,840000,3,18,8914098889,2120000,4,108,8720551129,3690000,18,42';
s.split(',').slice(1, 4).join(',');    // => '19630000,24,990'
s.split(',').slice(5, 8).join(',');    // => '840000,3,18'
s.split(',').slice(9, 12).join(',');   // => '19630000,24,990'
s.split(',').slice(13, 16).join(',');  // => '840000,3,18'
如果出于任何原因,您希望使用正则表达式:

var s = '8718584449,19630000,24,990,10218828289,840000,3,18,8914098889,2120000,4,108,8720551129,3690000,18,42';
s.match(/\d+,((?:\d+,){2}(?:\d+))/g);  // => ['19630000,24,990', …]

您可以使用和来避免使用正则表达式

var s = '8718584449,19630000,24,990,10218828289,840000,3,18,8914098889,2120000,4,108,8720551129,3690000,18,42';
s.split(',').slice(1, 4).join(',');    // => '19630000,24,990'
s.split(',').slice(5, 8).join(',');    // => '840000,3,18'
s.split(',').slice(9, 12).join(',');   // => '19630000,24,990'
s.split(',').slice(13, 16).join(',');  // => '840000,3,18'
如果出于任何原因,您希望使用正则表达式:

var s = '8718584449,19630000,24,990,10218828289,840000,3,18,8914098889,2120000,4,108,8720551129,3690000,18,42';
s.match(/\d+,((?:\d+,){2}(?:\d+))/g);  // => ['19630000,24,990', …]

我不太清楚你所说的“我可以得到”是什么意思?你能详细解释一下吗?@Willwsharp我的意思是我确切地知道这些数字在字符串中的位置,所以我需要在每个长数字之后得到下面的子字符串。我仍然不确定我是否理解。所以你知道你列出的那些长数字的索引,你想在每个长数字之后得到下两个数字吗?如果这种情况看起来很奇怪,那么可能有更好的方法来实现您想要实现的目标。@Willwsharp基本上每4个数字一次,当我知道第一个数字时,如何动态地获得第二、第三和第四个数字?我不太确定您所说的“我可以获得索引”是什么意思?你能详细解释一下吗?@Willwsharp我的意思是我确切地知道这些数字在字符串中的位置,所以我需要在每个长数字之后得到下面的子字符串。我仍然不确定我是否理解。所以你知道你列出的那些长数字的索引,你想在每个长数字之后得到下两个数字吗?如果这种情况看起来很奇怪,那么可能有更好的方法来实现你想要实现的目标。@Willwsharp基本上是每4个数字一次,当我知道第一个数字时,如何动态地获得第二、第三和第四个数字?你可以把第一个解放在一个循环中。对于每4个数字,如何获得第二个,当我知道第一个数字时,第三个和第四个数字是动态的?只有当我有第一个号码时,我才想要这些号码。在您的示例中,它似乎得到了所有可能的场景,但事实并非如此dynamic@KananFarzali我不太明白。如果要搜索“特定数字后的三个数字”,可以将第一个
\d+
替换为该数字:
newregexp(x+,((?:\\d+,){2}(?:\\d+),'g')
。这就是你想做的吗?@thomasd,太完美了!干杯你可以把第一个解决方案放在一个循环中。对于每4个数字,当我知道第一个数字时,如何动态地得到第二、第三和第四个数字?只有当我有第一个号码时,我才想要这些号码。在您的示例中,它似乎得到了所有可能的场景,但事实并非如此dynamic@KananFarzali我不太明白。如果要搜索“特定数字后的三个数字”,可以将第一个
\d+
替换为该数字:
newregexp(x+,((?:\\d+,){2}(?:\\d+),'g')
。这就是你想做的吗?@thomasd,太完美了!干杯