要测试下列项中存在哪个数学运算符(*、/、+、-):
13*4
7+8
-15/3
7-5对于JavaScript,我有以下正则表达式:
/[\*\+/\-]/问题是regex会将-15/3中的负号识别为运算符。如何使它与字符串中的第一个字符不匹配?
发布于 2013-09-04 07:50:31
您可以匹配这样的正则表达式:
One or more digits (also allowing a decimal)
followed by optional whitespace
followed by an operator
followed by optional whitespace
followed by one or more digits (also allowing a decimal)然后在中间引用捕获的组来获取操作符:
/[\d.]+\s*([*+\-\/])\s*[\d.]+/样本代码:
var match = str.match(/[\d.]+\s*([*+\-\/])\s*[\d.]+/);
if (match) {
var operator = match[1];
}工作演示和测试代码:http://jsfiddle.net/jfriend00/DgrSg/
如果您想在运算符(例如其他表达式)之前允许更多的数字,那么您必须做的不仅仅是一个简单的、甚至复杂的正则表达式。这个答案假设你只是试图解决你提出的例子。
发布于 2013-09-04 07:50:28
你可以用:
/.[\*\+/\-]/这只会确保符号前面有一个字符。
这是一个非常快速和肮脏的修复,我可能更愿意做一个完整的表达式评估器来捕捉其他100个潜在的错误条件,但是如果您想要一些简单的东西,并且只需要比您所拥有的稍微健壮一些的话,它就可以了。
发布于 2013-09-04 09:31:24
检查您的操作符前面有一个数字,后面跟着一个数字、一个减号和一个数字。
/\d[\*\+/\-]-?\d/https://stackoverflow.com/questions/18608194
复制相似问题