我正在编写一个矩阵计算器,用户在其中输入一些矩阵,然后编写一个包含所需矩阵的方程。为了验证这个方程,我想要一个正则表达式,如果一个字符不是从字组a,0-9,返回'true‘。,+,-,*,^,(,)。我已经创建了一个字符串数组来测试这个正则表达式,除了最后一个字符串之外,它可以工作。奇怪的是,我已经在regex101上测试了这个,并且在那个网站上,regex按计划工作。如何修改regex以使最后一个字符串返回“true”以及返回“true”的其他字符串?
let invalidCharRGX = /[^a-z0-9\.\+\-\*\^\(\)]/gi;
let strArr = [
"A+B-C", //1 should return false
"(A+B)-C", //2 should return false
"A^+B^-C", //3 should return false
"A*B-C", //4 should return false
"2.5A+C", // 5 should return false
"A=B", //6 should return true
"[A-B]", //7 should return true
"A&B", //8 should return true
"A\B" //9 should return true
];
strArr.forEach((word, index) => {
console.log(invalidCharRGX.test(word),
word.match(invalidCharRGX),
index + 1
);
})
发布于 2021-11-09 13:20:12
当JS插入字符串时,"A\B"
将被剥夺它的转义。
由于没有转义-b的特殊字符,转义将被删除。
在最初的语言分析中。
let invalidCharRGX = /[^a-z0-9\.\+\-\*\^\(\)]/gi;
let strArr = [
"A+B-C", //1 should return false
"(A+B)-C", //2 should return false
"A^+B^-C", //3 should return false
"A*B-C", //4 should return false
"2.5A+C", // 5 should return false
"A=B", //6 should return true
"[A-B]", //7 should return true
"A&B", //8 should return true
"A\\B", //9 should return true
"A\B" //10 should return false
];
strArr.forEach((word, index) => {
console.log(word,
invalidCharRGX.test(word),
word.match(invalidCharRGX),
index + 1
);
})
发布于 2021-11-09 13:13:38
这不是正则表达式问题,这是您在最后一个条目中定义字符串的方式,即"A\B",您需要用另一个斜杠(即“A\B”)转义,否则它就被忽略了。
https://stackoverflow.com/questions/69904962
复制