Javascript 索引1附近的未关闭组

Javascript 索引1附近的未关闭组,javascript,regex,search,Javascript,Regex,Search,有人能帮我在javascript上实现这个功能吗 我在上面的javascript上实现了这个函数,但是当我尝试在这个字符串上使用时:Item 1–1 X 500 OS 129062。 材料/测试分析,SEM DÉBITO (AMOSTRA GRÁTIS)。 我得到一个错误:索引1附近的未关闭组 请帮帮我 function retiraAcentos(texto) { var caracEspec = '.áàãâäéèêëíìîïóòõôöúùûüçñÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚ

有人能帮我在javascript上实现这个功能吗

我在上面的javascript上实现了这个函数,但是当我尝试在这个字符串上使用时:Item 1–1 X 500 OS 129062。 材料/测试分析,SEM DÉBITO (AMOSTRA GRÁTIS)。

我得到一个错误:索引1附近的未关闭组

请帮帮我

function retiraAcentos(texto) {

  var caracEspec = '.áàãâäéèêëíìîïóòõôöúùûüçñÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇÑ/';
  var caracComum = '.aaaaaeeeeiiiiooooouuuucnAAAAAEEEEIIIIOOOOOUUUUCN.';
  var textoResultado = '';
  for (i = 0; i < texto.length; i++) {

    var letra = texto.substr(i, 1);
    if ((letra == "*") || (letra == "?") || (letra == "\n") || (letra == '+')) {
      continue;
    }

    var posLetra = caracEspec.search(letra);    

    if (posLetra >= 0) {      
      textoResultado += caracComum.substr(posLetra, 1);
    } else {
      textoResultado += letra;
    }

  }

  return textoResultado;

}
函数retiraAcentos(texto){
var caracEspec=“.áèèèèèèèòùèèèèèèèèèèèèèèèèèèèèèè;
var caraccoum='.aaaaaaeeeeiiouuuuuuunaaaaaaeeeeiiouuuuuuucn';
var textoResultado='';
对于(i=0;i=0){
textoResultado+=caraccoum.substr(posLetra,1);
}否则{
textoResultado+=letra;
}
}
返回textoResultado;
}
该函数需要一个正则表达式。尝试改用
indexOf

var posLetra = caracEspec.indexOf(letra);

我使用JSFIDLE做了一些研究

事实证明,如果文本包含括号(开始或结束), 然后,这样的括号在某个点成为
search
函数,它会引发未终止的插入错误

显然,这个函数在内部使用正则表达式和一个括号 不是任何有效的正则表达式

使用
indexOf
而不是
search

另一个更正:从
caracEspec
caraccoum

如果使用
search
,则点(视为regex)匹配anychar, 在这种情况下,
caracEspec
中的第一个字符表示
posLetra
=0。 这导致从
caraccoum
中获取第一个字符(幸运的是,也是一个点)


现在不需要这些组合。

在这样的示例输入上发生错误:
“foobar”。search(“(”
)。请参阅@x-ray答案以获取解释。我认为问题在于
search
函数,因为它采用正则表达式。而且肯定是单个
是未关闭的组。最好使用
索引of
选项。