我正在构建一个vanilla JS计算器并尝试使用正则表达式.test()函数来限制用户连续多次使用运算符
即。 2 ++++ 3
它的结构为if else语句,问题是正则表达式测试第一次起作用,但第二次失败,导致代码在不应该跳转到else语句时。我的正则表达式错了吗?我使用错误的函数来运行比较吗?
var testOperands = /[+-/*=]/g;
switch (x) {
case "+":
if(testOperands.test(currentEntry[0])){
currentArea.textcontent = x;
totalArea.textContent = totalArea.textContent + "";
} else {
currentArea.textContent = x;
totalArea.textContent = (totalArea.textContent + x);
currentEntry = ["+"];
totalEntry.push(x);
}
break;
case "-":
if(currentEntry[0] === "-"){
currentArea.textcontent = x;
} else {
currentArea.textContent = x;
totalArea.textContent = (totalArea.textContent + x);
currentEntry = ["-"];
totalEntry.push(x);
}
break;
答案 0 :(得分:2)
您的正则表达式无效,-
需要转义:[+\-\/*=]
答案 1 :(得分:0)
/^[+\-%*]?$/g
随意在方括号中添加更多符号,但此正则表达式检查任何这些字符中的0或1 ...任何超过1且测试将不会通过...
let reg = /^[+\-%*]?$/g
console.log(reg.test('+')) //true
console.log(reg.test('++')) //false
使用此正则表达式检查多个运算符IN-BETWEEN数字或任何长度。
let reg = /^([0-9]+[+\-%*]?[0-9]+)$/g
console.log(reg.test('123+123')) //true
console.log(reg.test('123++123')) //false
答案 2 :(得分:0)
正则表达式:[-+\/*=]{2,}
function myFunction() {
console.clear()
var s = document.getElementById("input").value;
console.log(/[-+\/*=]{2,}/.test(s));
}
<form action="javascript:myFunction()">
<input id="input" type="text" name="math" value="2++3"><br><br>
<input type="submit" value="Submit">
</form>