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