Autor Zpráva
Monkeys
Profil *
Zdravim

neviete mi niekto prosim vysvetlit preco mi tento riadok v kazdom prehliadaci vypisuje chybu ?

text = text.replace(new RegExp(from.charAt(i), "g"), to.charAt(i));

Konkretne chyba Undefined Quantifier.

Vdaka
M.
_es
Profil
Monkeys:
Konkretne chyba Undefined Quantifier.
Možno keby si ešte napísal, aké konkrétne hodnoty majú premenné text, from, i a to...
Monkeys
Profil *
var from = "ľščťžýáíéäúňôď·/_,:;",
              to   = "lssctzyaieaunod------";
          for (var i=0, l=from.length ; i<l ; ++i) {
        text = text.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
          }

text je retazec z inputu cele je to postavene na evente keyup


Problem je asi v BOM-e ked som si vypisal

alert(from.length); //34 znakov
alert(to.length); //20 znakov 
_es
Profil
Monkeys:
text je retazec z inputu
Tak bude asi chyba v tom poslednom, čo si ešte neuviedol, lebo to funguje: jsfiddle.net/mqju5uvw. Akú konkrétnu hodnotu má teda premenná text?
Monkeys
Profil *
_es:

cela funkcia

$(function(){
$("input[name='nazovproduktu']").keyup(function(){
                                                
var text = $(this).val();
text = text.toLowerCase();

var from = "ľščťžýáíéäúňôď·/_,:;";
var to   = "lsctzyaieaunod------";
//alert(from.charAt(0));
for (var i=0; i < from.length; i++) {
var text = text.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
}
        
text = text.replace(/[^a-z0-9 -]/g, '').replace(/\s+/g, '-').replace(/-+/g, '-'); 

 $("input[name='urlnazovproduktu']").val(text);        
});
});

Ale problem bude asi v kodovani dokumentu v ktorom mam ten js ulozeny vidim to tak ...

M.


_es:

Problem bol v tom kodovani.
Ked som si pozrel zdroj tak su tam taketo cudne znaky

var from = "ľščťžýáíéäúňôď·/_,:;";
var to   = "lsctzyaieaunod------";

teraz to uz funguje ako ma

vdaka za reakcie

M.
Monkeys
Profil *
Este sa vratim k tomuto prvemu riadku

text = text.replace(new RegExp(from.charAt(i), "g"), to.charAt(i));

zistil som ze IE nepodporuje druhy argument flag, u new RegExp
Preto rozmyslam ci sa da neaky sposobom zapisat riadok hore do takehoto zapisu?

text = text.replace('/' + from.charAt(i) + '/'g, to.charAt(i));

vdaka
M.
Chamurappi
Profil
Reaguji na Monkeyse:
zistil som ze IE nepodporuje druhy argument flag, u new RegExp
Jak jsi na to přišel? Je to samozřejmě nesmysl.

ci sa da neaky sposobom zapisat riadok hore do takehoto zapisu
Ne. Literál regulárního výrazu není řetězec, nejde spojovat.

Proč nahrazuješ v několika průchodech? Proč neuděláš jednoduše text.replace(/[^-\w ]/g, function(m) { return to.charAt(from.indexOf(m)) || "" })?
Monkeys
Profil *
Chamurappi:
Jak jsi na to přišel? Je to samozřejmě nesmysl.

Na tejto stranke
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

Uplne dolu Browser compatibility

Co sa tyka tvojho kodu, viem si napisat co potrebujem mozno je to na viac riadkov a samozrejme tvoje riesenie je krajsie a elegantnejsie no neni som az taky zbehli :)

M.
Joker
Profil
Monkeys:
„Jak jsi na to přišel? Je to samozřejmě nesmysl.“
>
Na tejto stranke
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
>
Uplne dolu Browser compatibility

To „not supported“ se týká pouze jedné hodnoty druhého parametru, a sice "y" (sticky flag).

edit, možná ještě jinak: Ta stránka říká, že IE nepodporuje ve druhém parametru hodnotu "y", ne že nepodporuje druhý parametr jako takový.
Filipkoss
Profil
Co takhle bez RegExp?
from.split("").forEach(function(i,k){text=text.split(i).join(to[k])})
nebo pro IE
for(var i=0,j=from.split("");i<j.length;i++)text=text.split(j[i]).join(to[i])

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0