Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 错误未捕获语法错误:无效的正则表达式:/(/:未终止的组_Javascript - Fatal编程技术网

Javascript 错误未捕获语法错误:无效的正则表达式:/(/:未终止的组

Javascript 错误未捕获语法错误:无效的正则表达式:/(/:未终止的组,javascript,Javascript,我正在检查我的字符串是否有要替换的特殊字符,但是对于下面的字符串,我有以下问题 字符串 (Lot P Verdes) 功能 function retira_acentos(palavra) { com_acento = 'áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ'; sem_acento = 'aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC'; nova='';

我正在检查我的字符串是否有要替换的特殊字符,但是对于下面的字符串,我有以下问题

字符串

(Lot P Verdes)
功能

function retira_acentos(palavra) { 
    com_acento = 'áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ'; 
    sem_acento = 'aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC'; 
    nova=''; 
    for(i=0;i<palavra.length;i++) { 
        if (com_acento.search(palavra.substr(i,1))>=0) { 
            nova+=sem_acento.substr(com_acento.search(palavra.substr(i,1)),1); 
        } 
        else { 
            nova+=palavra.substr(i,1); 
        } 
    } 
    return nova.toUpperCase(); 
}
retira_acentos(palavra){
联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会:联合会;
sem_acento=‘aaaaeaeeiiiouuuuuucaaaaeeiiouuuuuuuc’;
新星='';
对于(i=0;i=0){
nova+=sem_acento.substr(com_acento.search(palavra.substr(i,1)),1);
} 
否则{
新星+=帕拉夫拉宫(i,1);
} 
} 
返回nova.toUpperCase();
}
错误

行:如果(com_acento.search(palavra.substr(i,1))>=0)


未捕获的语法错误:无效的正则表达式:/(/:未终止的组

在正则表达式中,圆括号用于定义组。在这种情况下,正则表达式分析器认为您打开了一个组,但忘了关闭它

我猜你不想打开一个组,你只想匹配文字字符

要匹配文字字符,在javascript正则表达式中,有两种方法:

  • 用退格转义字符:
    \
    。示例:
    /\(/

  • 将您的字符用方括号括起来。例如:
    [(]

在您的情况下,最好使用第二种方法,因为它适用于任何字符(即使是不需要转义的字符),也适用于许多字符

因此,我建议您通过以下方式更改
search
的参数:

search('['+palavra.substr(i,1)+']')

您在这里遇到的问题是,
String#search
需要一个
regexp
作为输入,但是,您似乎希望搜索字符串输入,而不是
regexp
。在这种情况下,使用
String#indexOf

尝试更改这些行,看看它是否提供了所需的输出:

    if (com_acento.indexOf(palavra.substr(i,1))>=0) { 
        nova+=sem_acento.substr(com_acento.indexOf(palavra.substr(i,1)),1); 
    } 

search
使用正则表达式,如果您输入字符串,它会尝试自动将它们转换为一个。但是
本身并不是一个有效的正则表达式,因为
(在正则表达式中有特殊的含义。或者<>代码>字符串y>包含。@ tWHB-NOPE,包括返回布尔值,但是我们的朋友在这里需要一个数字,如您在中间可以看到的。line@Ahmed非常感谢你,它成功了。我现在也明白了错误的原因。