验证字符串以匹配数字/浮点数

时间:2019-06-24 07:33:05

标签: javascript regex firefox

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

正则表达式值: UIImage.loadFrom(urlString: "imageName") { (image) in //add your code here..... } UIImage.loadFrom(urlString: "https://www.pexels.com/photo/animal-antenna-biology-butterfly-2395264/") { (image) in //add your code here..... }

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

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

问题是该正则表达式包含(?<=^| )\d+((\,\d+)|(\.\d+))?(?=$| ),但Mozilla Firefox当前不支持该正则表达式。 该正则表达式的替代方案是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用

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

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

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

请参见regex demoregex graph

enter image description here

详细信息

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