为什么javascript正则表达式在使用'\';?
我试图捕获传递给eval()函数的无效运算符,以便它可以在屏幕上显示为什么javascript正则表达式在使用'\';?,javascript,regex,Javascript,Regex,我试图捕获传递给eval()函数的无效运算符,以便它可以在屏幕上显示无效表达式,但它不起作用。我有什么遗漏吗?抱歉,如果这听起来很傻,但我是JavaScript初学者 function evaluating(el){ var invalidOperators = ['//','**','+/','/+','+*','*+','-/','/-','-*','/*','*/']; var i; for(i=0;i<invalidOperators.length;i++)
无效表达式
,但它不起作用。我有什么遗漏吗?抱歉,如果这听起来很傻,但我是JavaScript初学者
function evaluating(el){
var invalidOperators = ['//','**','+/','/+','+*','*+','-/','/-','-*','/*','*/'];
var i;
for(i=0;i<invalidOperators.length;i++){
if(el.search(invalidOperators[i])!= -1){
document.getElementById('display').value = 'INVALID SYNTAX';
}
else{
document.getElementById('display').value = eval(el);
}
}
}
功能评估(el){
变量无效运算符=['/'、'**'、'+/'、'/+'、'+*'、'*+'、'-/'、'/-'、'-*'、'-*'、'/*'、'*/'];
var i;
对于(i=0;i如果不使用break;
中断循环,则可以找到一个无效字符串,但紧接着就找不到下一个无效字符串,因此最终不会得到预期的无效语法,这是一个假阴性
我将简化函数并编写如下代码。函数只应执行一件事,即返回true或false(取决于字符串是否有效)。然后,在另一个只做一件事的函数中使用此函数,即在div中写入“无效语法”
。函数越小、越专业越好
const invalidOperators=['/'、'**'、'+/'、'/+'、'+*'、'*+'、'-/'、'/-'、'-*'、'/*'、'*/';
//如果要测试的字符串包含invalidOperators数组中的任何元素,则返回true
常量isInvalid=toTest=>InvalidoOperators.some(e=>toTest.includes(e));
const checkInvalid=event=>output.innerHTML=isInvalid(event.target.value)?“无效!!”:“好的”;
如果不使用break;
中断循环,可以找到一个无效字符串,但紧接着,下一个无效字符串就找不到了,因此最终不会得到预期的无效语法,这是一个假阴性
我将简化函数并编写如下代码。函数只应执行一件事,即返回true或false(取决于字符串是否有效)。然后,在另一个只做一件事的函数中使用此函数,即在div中写入“无效语法”
。函数越小、越专业越好
const invalidOperators=['/'、'**'、'+/'、'/+'、'+*'、'*+'、'-/'、'/-'、'-*'、'/*'、'*/';
//如果要测试的字符串包含invalidOperators数组中的任何元素,则返回true
常量isInvalid=toTest=>InvalidoOperators.some(e=>toTest.includes(e));
const checkInvalid=event=>output.innerHTML=isInvalid(event.target.value)?“无效!!”:“好的”;
el是一个字符串吗?如果是这样,我认为您应该尝试使用indexOf
方法,而不是search
。一旦检测到无效语法,可能会中断循环。您可能只想eval
在for
循环之后才计算字符串。@BilalMirza是的,el是一个字符串。如果您只有--代码>在invalidOperators中。这是关于具有正则表达式特殊字符的东西,我不是understanding@yunzen我尝试过这样做,但我希望eval部分仅在部分为false时执行。如果部分为true
,我希望它在屏幕上显示无效语法
,但您将eval
,如果没有找到了一个无效的运算符。el是字符串吗?如果是,我认为您应该尝试使用indexOf
方法,而不是search
。一旦检测到无效语法,可能会中断循环。您可能只想eval
在for
循环之后计算字符串。@BilalMirza是的,el是字符串。上面的代码在如果您在invalidOperators中只有--
,那么它就是关于使用正则表达式特殊字符的,而我不是understanding@yunzen我尝试过这样做,但我希望eval部分仅在部分为false时执行。如果部分为true
,我希望它在屏幕上显示无效语法
,但您将eval
,如果找到除一个之外的所有无效操作员。非常感谢!它帮助我使用include()函数。但是,当您传递包含/*
或*/
@JeremyThilleNo的字符串时,它显示错误。在我的代码段中,当我键入/*
时,它表示无效。是的,它显示了无效操作中的一些字符串的错误,并且可以与其他字符串完美配合。这是includes()的问题吗我不知道。什么错误和什么其他字符串?在给定的invalidOperators=['/'、'**'、'+/'、'/+'、'+*'、'*+'、'-/'、'/-'、'-*'、'/*'、'*/']
有一些值,如*/
和\*
,如果检测到这些值,控制台中将显示无效令牌
错误,以及其他字符串,如/+//code>,-/
,如果检测到这些值,将输出无效语法
,这正是我所期望的。非常感谢!它帮助我使用include()函数。但是,当您传递包含/*
或*/
@JeremyThilleNo的字符串时,它显示错误。在我的代码段中,当我键入/*
时,它表示无效。是的,它显示了无效操作中的一些字符串的错误,并且可以与其他字符串完美配合。这是includes()的问题吗我不知道。什么错误和什么其他字符串?在给定的invalidOperators=['/'、'**'、'+/'、'/+'、'+*'、'*+'、'-/'、'/-'、'-*'、'/*'、'*/']
有一些值,如*/
和\*
,如果检测到这些值,将在控制台中显示无效标记
错误,以及其他字符串,如/+//code>,-/
,如果检测到这些值,将输出无效语法
,这正是我所期望的。