如何用javascript中的正则表达式匹配并返回零?

如何用javascript中的正则表达式匹配并返回零?,javascript,regex,Javascript,Regex,我试图从字符串中提取一个数字。数字可能是零。数字如下所示:“+123”、“-8”或“0” alert( '+123'.match(/[-?|+?]\d+/) ); alerts +123 alert( '-8'.match(/[-?|+?]\d+/) ); alerts -8 alert( '0'.match(/[-?|+?]\d+/) ); alerts null // why oh why? 如何获取“0”。匹配(/[-?|+?]\d+/)以返回0而不是null?模式 [-?|+?]

我试图从字符串中提取一个数字。数字可能是零。数字如下所示:“+123”、“-8”或“0”

alert( '+123'.match(/[-?|+?]\d+/) );
alerts +123

alert( '-8'.match(/[-?|+?]\d+/) );
alerts -8

alert( '0'.match(/[-?|+?]\d+/) );
alerts null // why oh why?
如何获取“0”。匹配(/[-?|+?]\d+/)以返回0而不是null?

模式

[-?|+?]
将恰好匹配一个
-
+
或一个
。你想要的是

[-+]?
它将与
-
+
匹配一次或零次

这也将允许像“123”这样的数字通过。如果您需要+符号,请使用此符号:

/0|[-+][1-9]\d*/
模式

[-?|+?]
将恰好匹配一个
-
+
或一个
。你想要的是

[-+]?
它将与
-
+
匹配一次或零次

这也将允许像“123”这样的数字通过。如果您需要+符号,请使用此符号:

/0|[-+][1-9]\d*/
这里

注意,这并不像肯尼在这里所说的那样严格


请注意,这并不像肯尼的

那样严格,这不是他想要的。一个数字只有一个前缀(如果有的话)@Sean:我不明白。有什么反例吗?我的错,我误读了:)但最后一个regexp看起来像是杀伤力过大,除非重要的是不允许-0/+0@Sean当前位置我想你误读了答案。如果数字不是
0
时需要
+
-
,则提供的最后一个正则表达式是一种替代方法。它只允许一个前缀。@Andy,的确是这样,我还没有得到我的第一杯咖啡:)这不是他想要的。一个数字只有一个前缀(如果有的话)@Sean:我不明白。有什么反例吗?我的错,我误读了:)但最后一个regexp看起来像是杀伤力过大,除非重要的是不允许-0/+0@Sean当前位置我想你误读了答案。如果数字不是
0
时需要
+
-
,则提供的最后一个正则表达式是一种替代方法。它只允许有一个前缀。@Andy,我确实有-我还没有喝到我的第一杯咖啡:)