正则表达式-分割的数学表达式
Regex - split mathematic expression
我正在构建一个叫做公式生成器的东西。这个想法是,用户必须在textarea
中键入公式的文本,然后我们将解析字符串值。结果是array.
例如,以下文本将被解析
LADV-(GCNBIZ+UNIN)+(TNW*-1)
则生成
下面的结果["LADV", "-", "(", "GCNBIZ", "+", "UNIN", ")", "+", "(", "TNW", "*", "-1", ")"]
关键是拆分由以下字符之一连接的每个单词:+
, *
, /
, -
, (
和这个)
;但仍然包括拆分器本身。
我尝试使用此表达式/[-+*/()]/g
进行拆分,但结果不包括拆分符。并且-1
也需要作为一个表达式来检测。
["LADV", "MISC", "", "GCNBIZ", "UNIN", "", "", "TNW", "", "1", ""]
解决这个问题的匹配正则表达式是什么?
var input = 'LADV-(GCNBIZ+UNIN)+(TNW*-1)';
var match = input.match(/(-?'d+)|([a-z]+)|([-+*()'/])/gmi);
console.log(match);
您可以使用match
代替split
,并使用regex:
var s = 'LADV-(GCNBIZ+UNIN)+(TNW*-1)';
var m = s.match(/(-'d+(?:'.'d+)?|[-+'/*()]|'w+)/g);
console.log(m);
//=> ["LADV", "-", "(", "GCNBIZ", "+", "UNIN", ")", "+", "(", "TNW", "*", "-1", ")"]
RegEx分手:
( # start capture group
- # match a hyphen
'd+(?:'.'d+)? # match a number
| # OR
[-+'/*()] # match one of the symbols
| # OR
'w+ # match 1 or more word characters
) # end capture group
模式交替的顺序很重要。
相关文章:
- 使用正则表达式捕获“”并分割成阵列
- 如何分割由JavaScript中使用正则表达式的多个部分组成的字符串
- 重复字符集的正则表达式分割
- 如何使用正则表达式(/^myString/g)开始分割字符串?
- 使用正则表达式混淆的JS字符串分割
- 可以使用正则表达式分割数字
- 用十进制分割字符串和数字的正则表达式
- 仅在特定上下文中按空格分割的JavaScript正则表达式
- Javascript正则表达式分割拒绝null
- Javascript通过多个分隔符分割字符串用于逻辑表达式
- 用于分割包含文本和url的字符串的正则表达式
- 如何分割正则表达式空间和标点匹配,但保留结果数组中的标点符号
- Javascript正则表达式不能分割
- 从字符串分割数字的正则表达式
- 使用java脚本或正则表达式从值中分割数字和字符串
- 正则表达式-分割的数学表达式
- 使用正则表达式按单词或操作符分割
- 使用正则表达式匹配或分割来查找特定的字符串
- 用于分割字符串的正则表达式,避免使用双记号
- 使用JavaScript正则表达式分割字符串