任何人都可以为我解释这个错误,我们在这里有:
if(statements[bracket].firsthalf.search(math_operators[j])!=-1)
其中statements[bracket].firsthalf = "2*a"
,math_operators[j]="*"
,控制台显示以下错误:
Uncaught SyntaxError:无效的正则表达式:/ * /:没什么用 重复
任何想法为什么会出现这样的错误?
答案 0 :(得分:12)
使用indexOf
,而不是search
。 indexOf
查找文字字符串,search
用于匹配正则表达式。在正则表达式中,大多数标点字符具有特殊含义,如果您想从字面上找到它们,则需要进行转义,这就是您收到错误的原因。
答案 1 :(得分:0)
搜索需要使用RegularExpression作为参数。
*
用于表示前一个表达式的0或更多。
赞[0-9]*
= 0或更多位数。
要将*
用作角色,您必须逃避它:
\*
您必须将搜索部分写为正则表达式。
2*a".search(*)
没有意义,因为它不会搜索字符(*
),而是搜索0或更多时间,因为*
之前没有任何内容。
对于+
来说,受保护的角色也是如此。
您应该使用其他功能,而不是以符合RegularExpression的方式搜索或编写您的请求,例如:
search([\*|\+|\-|\/])