繁体   English   中英

如何使用javascript的计算器输入使用正则表达式?

[英]How to use regular expression for calculator input with javascript?

我正在尝试用JavaScript编写简单的计算器。 我想检查用户输入是否正确。 我写了正则表达式,以确保用户输入正确,但它不起作用。 我想要做的是一个简单的规则,运算符(/ * - +)后面应该是操作数(0-9),但第一个运算符可以是 - 或+。 下面的正则表达式不起作用。 我的错是什么?

^[-+]?[0-9]{0,}([-+*/]?)[0-9]+$

您的表达式查找可选-+后跟或更多数字( [0-9]{0,} )。 我想你可能想要一个或多个( + )。 同样, ? in ([-+*/]?)使操作符可选 您可能还想捕获各个部分。

当我在两个操作数之间有一个操作符时,这很好,但是当我执行9 + 9 + 9时,它更多的是两个操作数。

如果要允许其后的附加运算符和数字,则必须允许后一部分重复。

这是我的粗略看法:

^\s*([-+]?)(\d+)(?:\s*([-+*\/])\s*((?:\s[-+])?\d+)\s*)+$

实例 (但如果您有三个或更多术语,那么捕获组会发生一些不太正确的事情。)

我做的改变:

  1. 使用\\d而不是[0-9]\\d代表“数字”)

  2. 将数字和运算符放在捕获组中。

  3. 不要使数字或运算符可选。

  4. 在不同的地方允许可选的空格( \\s* )。

  5. (?: _________ )+是让那些parens中的部分重复的原因。

  6. 在第二组数字前面允许-+ ,但前提是在运算符后面有空格。

^[-+]?

是正确的,但随后

[0-9]{0,}

不是,你想要+量词,好像你使用{0,}(与*相同),你可以让“+ * 9”正确。 然后,

([-+*/]?)[0-9]+

是错的,你想:

([-+*/]+[-+]?[0-9]+)*

所以你将拥有例如* -523 + 4234 / -34(你可以在一个负数或正数上使用一个操作数,或者不使用精确数字,这意味着明显是正数)

最后,你会有类似的东西:

^[-+]?[0-9]+([-+*/]+[-+]?[0-9]+)*$

当然,您可以用\\ d替换class [0-9]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM