替换为正则表达式
Replace with the regular expression
我需要用什么正则表达式来纠正
if (text.indexOf("+") != -1) {
action = "+";
} else if (text.indexOf("-") != -1) {
action = "-";
} else if (text.indexOf("*") != -1) {
action = "*";
} else if (text.indexOf("/") != -1) {
action = "/";
}
此代码?
编辑:
以及如何改进此代码:
switch (action) {
case "+":
result = parseInt(array[0]) + parseInt(array[1]);
break;
case "-":
result = parseInt(array[0]) - parseInt(array[1]);
break;
case "*":
result = parseInt(array[0]) * parseInt(array[1]);
break;
case "/":
result = parseInt(array[0]) / parseInt(array[1]);
break;
default:
break;
}
很抱歉无聊的问题,我是 js 的新手。
您可以使用以下任一方法:
var action = text.replace(/.*([+*/-]).*/,'$1');
var match = /[*+/-]/.exec(text);
var action = match && match[0];
如果text
中可能存在换行符,请将第一个更改为:
var action = text.replace(/['d'D]*([+*/-])['d'D]*/,'$1');
编辑:switch
您可以通过使用例如
// allow floating point values, and also
// don't accidentally interpret "011" as octal
array[0]*1 + array[1]*1;
有关为什么parseInt
可能是坏的更多详细信息,请参阅此答案。
您还可以删除案例陈述中多余的default
部分。但是,我怀疑您想要的"改进"是减少线条。鉴于=-*/
是 JavaScript 中的运算符(而不是方法),我想不出任何方法来避免有四个计算(即switch
或if/else if
)。
而在Ruby中,例如,您可以使用array[0].send(action,array[1])
来涵盖所有四种情况;)
相关文章:
- 如何用正则表达式替换特定的JavaScript注释
- 用特定的javascript正则表达式替换每个单词
- 如何用JavaScript正则表达式替换href中的所有内容
- 使用 JavaScript 中的正则表达式替换大文本中两个字符之间的每个出现的字符串
- Javascript 正则表达式替换为转义的反斜杠
- 使用 JavaScript 正则表达式替换文本中的类似字符串
- 在特殊标记之外使用 JavaScript 正则表达式替换
- 如何使用 javascript 在正则表达式替换中表示大括号
- 在字符串 JavaScript 中使用正则表达式替换
- 用Javascript正则表达式替换iframe到可点击的YouTube链接
- JS正则表达式替换编号
- 正则表达式:替换javascript中的字符串
- Javascript正则表达式替换以转换文本
- 正则表达式替换为插入符号
- 在javascript中用正则表达式替换空格
- 用正则表达式替换javascript
- 使用 JavaScript 正则表达式替换和递增整数值
- JS 正则表达式:替换字符串中的所有数字
- 正则表达式替换
- JS - 正则表达式替换在一次调用中发生多次,如何让它运行一次