首页 > 解决方案 > 验证字符串以匹配数字/浮点数

问题描述

我在使用正则表达式时遇到了一些麻烦,因为验证该值是一个有效的数字/浮点数。

正则表达式值: (?<=^| )\d+((\,\d+)|(\.\d+))?(?=$| )

允许的示例:“51,5”、“54”、“54.636”、“-45.6”、“-2”、...

不允许的示例:“djg52§”、“-”、“51”。“56 8”、“89-”、...

问题是这个正则表达式包含但positive lookbehind它目前在 Mozilla Firefox 中不受支持。这个正则表达式的替代方案是什么,而不是向后看?

标签: javascriptregexfirefox

解决方案


您可以使用

(?:^ ?|\D )(-?\d+(?:[,.]\d+)?)(?!\S| \d)

或者,如果您的字符串是独立的

(?:^\s?|\D\s)(-?\d+(?:[,.]\d+)?)(?!\S|\s\d)

请参阅正则表达式演示正则表达式图

在此处输入图像描述

细节

  • (?:^\s?|\D\s) - 一个非捕获组匹配字符串的开头,后面有一个可选的空格或一个非数字字符和一个空格
  • (-?\d+(?:[,.]\d+)?)- 捕获组 1:一个可选的, 1+ 数字和可选的or和 1+ 数字-序列,.
  • (?!\S|\s\d)- 如果紧邻当前位置的右侧有一个非空白字符或后跟一个数字的空白,则匹配失败的负前瞻。

推荐阅读