Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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中以数组形式从字符串中仅获取X个数字_Javascript_Regex - Fatal编程技术网

如何在Javascript中以数组形式从字符串中仅获取X个数字

如何在Javascript中以数组形式从字符串中仅获取X个数字,javascript,regex,Javascript,Regex,我有以下字符串,如: "Your number 2328681 is not in range [2428681 - 3328681]" 我只需要在列表或数组中获取后两个数字2428681和3328681,任何允许我分别读取它们的内容 搜索后,我找到了此函数match(),并尝试执行以下操作: var thestring = "Your number 2328681 is not in range [2428681 -3328681]" var numb = thestring.match(/

我有以下字符串,如:

"Your number 2328681 is not in range [2428681 - 3328681]"
我只需要在列表或数组中获取后两个数字
2428681
3328681
,任何允许我分别读取它们的内容

搜索后,我找到了此函数
match()
,并尝试执行以下操作:

var thestring = "Your number 2328681 is not in range [2428681 -3328681]"
var numb = thestring.match(/\d/g);
numb = numb.join("")
alert(numb)
或者使用
replace()

在这两种情况下,我都得到了
“232868124286813328681”
我不知道如何将它转换为包含最后两个数字的列表,如
[2428681,3328681]
尝试以下方法:

var str = "Your number 2328681 is not in range [2428681 -3328681]";
var spl1 = str.split("[")[1].split(" ").map(it => parseInt(it));
functions(str){
      str.split("[")[1]
    }
最终结果:


您可以获取所有数字,并对结果进行切片,以删除第一个找到的:

s=“您的号码2328681不在[2428681-3328681]范围内”;
g=s.match(/(?\d+)/g);
控制台日志(g);
console.log(g.slice(1))您可以执行以下操作

let str=“您的号码2328681不在[2428681-3328681]范围内”
让结果=str.match(/\[(?\d+)(?\d+)\]/);
如果(结果)
result.shift();

控制台日志(结果)我将这样做,首先,我将在开括号中拆分字符串

functions(str){
  str.split("[")
}
然后取最后一个元素,它是由两个数字组成的字符串
“2428681-3328681]”

然后,修剪掉后面的支架

functions(str){
  var newstr = str.split("[")[1]
  newstr = newstr.slice(0, -1)
}
然后,在空格上再次拆分,这将得到最终数组。所以我们最终得到了

functions(str){
  var newstr = str.split("[")[1]
  newstr = newstr.slice(0, -1)
  return newstr.split(" ")
}
另一个解决方案:

var thestring=“您的号码2328681不在[2428681-3328681]范围内”。匹配(/\[(.*)\]);

console.log(字符串[1].split(“”)
使用捕获组。如果您的数字总是在括号之间,并且没有其他括号,您甚至不需要正则表达式。是的,先生,我的数字总是在括号之间。这不起作用,因为您按表示负数的
-
进行拆分,如果两者都是正数,它将失败。编辑后,我认为这是最简单和最好的解决方案。这有一个问题,它不会考虑
-
。在答案中也添加了这一点:)这一个非常有效!!等待接受你们的回答谢谢大家!!
functions(str){
  var newstr = str.split("[")[1]
  newstr = newstr.slice(0, -1)
  return newstr.split(" ")
}