我有一个总是适合这个形式的表达式:
变量- 25.6 +的
这是用户输入的字符串。我想解析每个令牌,不包括操作符。我想也许一个正则表达式会很好,但它比我想象的要难。
我正在使用javascript引擎顺便说一句。以下是我到目前为止写的。
/(d+.?d+|w+)(?:[+-*/])(d+.?d+|w+)/
变量变量+ 25.625.6
但是,如果展开为多个操作符,则失败:
变量+ 25.6 + other_variable +…
我试着
/((d+.?d+|w+)(?:[+-*/]))+(d+.?d+|w+)/
使得被动组可以重复,但是,它也匹配
+变量
所以我不确定为什么它匹配操作符,即使它是在一个被动组。
变量可以是任何文本。它就是任何与w类匹配的东西。因此,任何小数(带或不带。)或单词都可以匹配。这四种操作符中的任何一种都可以在变量/数字之间。我只是不希望操作符被捕获,只验证它们是否存在。
考虑对这些操作符进行split
匹配,而不是尝试匹配每个子模式。
var r = 'variable+25.6-other_variable/21.44*44.10'.split(/[+*/-]/);
console.log(r); //=> [ 'variable', '25.6', 'other_variable', '21.44', '44.10' ]