正则表达式不正确匹配-javascript

时间:2019-11-18 06:04:14

标签: javascript regex

我正在尝试为线性方程组实现解析器,因此我想匹配以下形式的字符串:

2x + 3y = 5
55x + 34s + 9872v = 25

所以,我的正则表达式如下:

/([0-9]+[a-z]\+{0,1})*=[0-9]+/;

但是,它匹配不正确的表达式,例如:

23x + 50 = 35
36x + 5xg = 10

而且我不明白为什么,从我的理解来看,它应该只是一个数字(任意长度),紧随其后的是代表变量的单个字符。

2 个答案:

答案 0 :(得分:3)

尝试以下正则表达式。演示是here

(\d*(?<![a-z])[a-z][+-]?)+=\-?\d+

答案 1 :(得分:0)

您需要匹配整个文本,但是正则表达式将返回任何匹配的段。

将表达式修改为/^([0-9]+[a-z]\+{0,1})*=[0-9]+$/,此处添加^$符号以匹配整个字符串。

console.log("2x+3y=5".match(/^([0-9]+[a-z]\+{0,1})*=[0-9]+$/));
console.log("55x+34s+9872v=25".match(/^([0-9]+[a-z]\+{0,1})*=[0-9]+$/));
console.log("23x+50=35".match(/^([0-9]+[a-z]\+{0,1})*=[0-9]+$/));
console.log("36x+5xg=10".match(/^([0-9]+[a-z]\+{0,1})*=[0-9]+$/));