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

Javascript 从字符串解释中提取数字

Javascript 从字符串解释中提取数字,javascript,string,numbers,match,Javascript,String,Numbers,Match,我在寻找一种从字符串中提取数字的方法。 例如: 我在这个网站上找到了一个解决方案。问题是我不太明白。 有人能解释一下下面这一行到底发生了什么吗 let res = string.match(/[+-]?\d+(?:\.\d+)?/g).map(Number); //return [129, 9, -12] 正则表达式: [+-]?\d+(?:\.\d+)? 将匹配以下子字符串: [+-]?-可以以+或-开头(字符集,由以下?设置为可选) \d+-然后,包含一个或多个数字字符(从0到9的数字

我在寻找一种从字符串中提取数字的方法。 例如:

我在这个网站上找到了一个解决方案。问题是我不太明白。 有人能解释一下下面这一行到底发生了什么吗

let res = string.match(/[+-]?\d+(?:\.\d+)?/g).map(Number); //return [129, 9, -12]

正则表达式:

[+-]?\d+(?:\.\d+)?
将匹配以下子字符串:

  • [+-]?
    -可以以
    +
    -
    开头(字符集,由以下
    设置为可选)
  • \d+
    -然后,包含一个或多个数字字符(从0到9的数字)
  • (?:\。\d+)
    -非捕获组,由
    设置为可选:
    • \。\d+
      -可以匹配一个文本
      ,后跟更多的数字字符
模式中唯一没有被输入使用的部分是末尾的小数部分。例如,在字符串中

foo +12.34
它将匹配
+12.34

正则表达式匹配从较大字符串中提取的子字符串(作为数组)。
.map(Number)
使用
Array.prototype.map
将一个数组的所有元素转换为另一个数组-它将字符串数组转换为数字数组。

首先
.match(regex)
字符串
原型上给定正则表达式的方法,将执行它并将结果返回给您,如果没有任何匹配项,则返回
null
。有关更多信息,请参见此:

对于正则表达式,
/[+-]?\d+(?:\。\d+)/g

  • [+-]?
    可选择匹配+或-
  • \d+
    匹配一个或多个数字
  • (?:\。\d+)
    非捕获组的
    后跟数字(您在这里获得的是十进制值)。这对于
    是可选的。看起来他们这里只需要整数
  • /g
    -
    g
    用于全局。所有匹配项都已返回
有关正则表达式的详细信息

.map(Number)
将迭代matches数组中的每个字符串项(所有匹配项都是字符串,因为这是第一件事),并使用
Number()
函数强制为Number

有关编号的更多信息


有关
.map
的更多信息:

它只需匹配所有分组在一起的数字并循环创建地图。要了解更多详细信息,您可以在中粘贴正则表达式并了解它。您可以简化
“每月天气回顾,第129卷,第9-12期”。匹配(/([+]?\d+)/g)。地图(x=>数字(x))
谢谢您的朋友。你能告诉我什么是理解正则表达式的最好方法吗?@Rakonjac如果你想找一个入门教程,它非常有用。有很多站点,在给定一个regex时,可以自动描述它或显示控制流,比如regex101和debuggex.com
foo +12.34