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+)?
将匹配以下子字符串:
-可以以[+-]?
或+
开头(字符集,由以下-
设置为可选)?
-然后,包含一个或多个数字字符(从0到9的数字)\d+
-非捕获组,由(?:\。\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