如何用javascript中的正则表达式匹配并返回零?
我试图从字符串中提取一个数字。数字可能是零。数字如下所示:“+123”、“-8”或“0”如何用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?模式 [-?|+?]
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,我确实有-我还没有喝到我的第一杯咖啡:)