2015-07-03 43 views
-5

我搜索了很多,但无法找到这个正则表达式。我的问题是,我做了一个计算器,但无法完全验证我的显示。我的情况是与点 我需要我的正则表达式是:数字点数字运算符数字点(1.23+1.23+1.)。点必须只放置一次,而不是像(1..23+ 1.1.1)。我也发现了类似的正则表达式,但它没有覆盖的情况下(1.23 +1.) 这里是我的正则表达式 - >/[0-9-+/*]+(\.[0-9][0-9]?)?/gRegEx解决方案为1.23 + 1.23 + 1

+0

它会这样做:/[0-9-+*]+(\.[0-9][0-9]?)?/g –

+0

你能澄清一下这个正则表达式正在使用哪种语言? –

+0

我想通过提供的正则表达式来判断JavaScript。 –

回答

0

检查了这一点(demo):

/^(([-+*\/ ]+)?(\b(\d+\.\d+)\b|\d))+$/ 

,但它的工作只有在有是每个字符串的一个等式 - 它匹配字符串的开头(^)和结尾($)。但是,您也可以使用/m或/和/g修饰符。

编辑

如果仅约 ' - ' 字符就足以将它添加到字符类:

/^(([-–+*\/ ]+)?(\b(\d+\.\d+)\b|\d))+$/ 
+0

谢谢这是非常好的。我需要表达来涵盖一件事,最后一个符号也可以是运营商(1.23 + 2.33+) –

+0

@KonstantinPopov你的意思是你想要覆盖一个遗产吗?或者只是最后的+或 - ? –

+0

没有括号只有运营商+ - */:)。我的想法是有计算器屏幕,我可以键入有效的方程式,我需要正则表达式来验证显示的每种类型。计算器只有主要功能,如+ - */ –

0

可以使用这个

^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[+-](?:\d+(?:\.\d*)?|\.\d+))*$

扩展:

^       # BOS 
[+-]?       # Optional Plus or minus 
(?:       # Decimal term 
     \d+ 
     (?: \. \d*)? 
    | \. \d+ 
) 
(?:       # Optionally, many more terms 
     [+-]       # Required Plus or minus 
     (?:       # Decimal term 
      \d+ 
      (?: \. \d*)? 
     | \. \d+ 
    ) 
)* 
$        # EOS