Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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专家。我所要做的就是让自己得到一个字符串中所有匹配项的数组,这些匹配项与给定的regExp匹配。正则表达式如下所示: [0-9]+ 即任意整数 因此,如果我传递字符串12 09:8:76:::54 12,我应该得到 arr[0]=12 arr[1]=09 arr[2]=8 arr[3]=76 arr[4]=54 arr[5]=12 容易吗?不适合我!我可以在vb.net中实现这一点,不管怎样,使用regexp.matcheString之类的东西

我在这方面确实有困难,但我不是javascript专家。我所要做的就是让自己得到一个字符串中所有匹配项的数组,这些匹配项与给定的regExp匹配。正则表达式如下所示:

[0-9]+
即任意整数

因此,如果我传递字符串12 09:8:76:::54 12,我应该得到

arr[0]=12 arr[1]=09 arr[2]=8 arr[3]=76 arr[4]=54 arr[5]=12

容易吗?不适合我!我可以在vb.net中实现这一点,不管怎样,使用regexp.matcheString之类的东西都没有问题。我认为javascript方法.exec也会给我一个数组,但是它只返回第一个匹配项。发生什么事?代码

function testIt(){
    splitOutSelection2("123:::45  0::12312 12:17"); 
}


function splitOutSelection2(sSelection){
    var regExp = new RegExp("[0-9]+","g");
    var arr = regExp.exec(sSelection);
}; 
应该这样做

g是获取所有匹配项所需的全局修饰符,而不仅仅是第一个匹配项

应该这样做

g是获取所有匹配项所需的全局修饰符,而不仅仅是第一个匹配项。

类似于:

var arrMatch = "12 09:8:76:::54 12".match(/[0-9]+/g);
alert(arrMatch);
.match将返回一个数组,如果设置了全局,当然找到了匹配项。 [0-9]+意味着它不仅会搜索单个数字,还会搜索匹配的12、09、76。

类似于:

var arrMatch = "12 09:8:76:::54 12".match(/[0-9]+/g);
alert(arrMatch);
.match将返回一个数组,如果设置了全局,当然找到了匹配项。
[0-9]+意味着它不仅要搜索单个数字,还要搜索匹配的12、09、76。

根据文档,exec返回第一个匹配项。你应该改用match

var arr = sSelection.match(/[0-9]+/g);


根据文档,exec返回第一个匹配项。你应该改用match

var arr = sSelection.match(/[0-9]+/g);


所有答案都有效,但我希望保留我的regExp对象,而不是在使用时指定它。因此,只需将函数更改为

function splitOutSelection2(sSelection){
    var regExp = new RegExp("[0-9]+","g");
    var arr = sSelection.match(regExp);
}; 

…这就是我要找的。感谢您为我指明了正确的方向,尽管我已经回复了所有人。

所有答案都有效,但我希望保留我的regExp对象,而不是在使用时指定它。因此,只需将函数更改为

function splitOutSelection2(sSelection){
    var regExp = new RegExp("[0-9]+","g");
    var arr = sSelection.match(regExp);
}; 
function splitOutSelection2(sSelection){
    return sSelection.split(/[^0-9]+/g);
};
…这就是我要找的。谢谢你为我指出了正确的方向,尽管是对所有回复的人

function splitOutSelection2(sSelection){
    return sSelection.split(/[^0-9]+/g);
};
对regExp求反并使用Stringsplit


否定regExp并使用Stringsplit。

谢谢,这很有效。我意识到我应该使用match而不是exec。我在regExp声明中指定了全局修饰符。但关键是“匹配”。我的代码可以重写为。。函数splitOutSelection2sSelection{var regExp=new regExp[0-9]+,g;var arr=sSelection.matchregExp;};谢谢,这个有用。我意识到我应该使用match而不是exec。我在regExp声明中指定了全局修饰符。但关键是“匹配”。我的代码可以重写为。。函数splitOutSelection2sSelection{var regExp=new regExp[0-9]+,g;var arr=sSelection.matchregExp;};谢谢我最初认为这场比赛不起作用,但它不起作用,因为我没有设置g标志。这就是为什么我选择了错误的执行路线。谢谢。我最初认为这场比赛不起作用,但它不起作用,因为我没有设置g标志。这就是为什么我选择了错误的执行路线。谢谢,我相信这也会奏效。使用拆分和否定匹配是否比使用exec更有效?谢谢,我相信这也会起作用。使用拆分和否定匹配是否比使用exec更有效?