为什么javascript正则表达式在使用'\';?

为什么javascript正则表达式在使用'\';?,javascript,regex,Javascript,Regex,我试图捕获传递给eval()函数的无效运算符,以便它可以在屏幕上显示无效表达式,但它不起作用。我有什么遗漏吗?抱歉,如果这听起来很傻,但我是JavaScript初学者 function evaluating(el){ var invalidOperators = ['//','**','+/','/+','+*','*+','-/','/-','-*','/*','*/']; var i; for(i=0;i<invalidOperators.length;i++)

我试图捕获传递给eval()函数的无效运算符,以便它可以在屏幕上显示
无效表达式
,但它不起作用。我有什么遗漏吗?抱歉,如果这听起来很傻,但我是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>,
-/
,如果检测到这些值,将输出
无效语法
,这正是我所期望的。