我正在构建一个图形抽屉,目前正在处理数学表达式解析器。我已经完成了大部分工作,但在解析它之前我一直在清理输入文本。我现在想要实现的是摆脱不允许的角色。
例如,在本文中:
5AX + 4asxxv + sdflog10aloga(132 * 43)SIN(132)
我希望匹配不是+
,-
,*
,/
,^
,(
,{{1 }},)
,ln
,log
,sin
,cos
,tan
,cot
,arcsin
...
并用arccos
替换它们。
以便输出
5×+ 4XX + log10log(132 * 43)SIN(132)
我需要有关正则表达式的帮助。
空格并不重要,因为我事先将它们清除了。
答案 0 :(得分:0)
有点棘手 - 至少我不会想到一个简单的方法来做你所要求的。正则表达式会变得怪异。
所以我反过来做了 - 匹配你想要保留的东西,并把它放回去。
正则表达式:
[\d+*/^()x-]|ln|log|(?:arc)?(?:sin|cos)|tan|cot
代码:
var re = /[\d+*/^()x-]|ln|log|(?:arc)?(?:sin|cos)|tan|cot/g,
text = '5ax+4asxxv+sdflog10aloga(132*43)sin(132)arccos(1)';
console.log(text.match(re).join(''));