Zgodnie z tą witryną powinna działać następująca metoda zamiany, choć jestem sceptyczna. http://www.bennadel.com/blog/55-Using-Methods-in-Javascript-Replace-Method.htmJavaScript: Przekazywanie funkcji z dopasowaniami do zastąpienia (regex, func (arg)) nie działa
Mój kod wygląda następująco:
text = text.replace(
new Regex(...),
match($1) //$.. any match argument passed to the userfunction 'match',
// which itself invokes a userfunction
);
używam Chrome 14, a nie przejdzie żadnych parametrów przekazywanych do funkcji meczu?
Aktualizacja:
Działa przy użyciu
text.replace(/.../g, myfunc($1));
Interpreter JavaScript spodziewa się zamknięcie - pozorne userfunctions wydają się prowadzić do problemów z zakresu tj dalsze userfunctions nie zostanie wywołany. Początkowo chciałem uniknąć zamknięć, aby zapobiec potrzebnemu zużyciu pamięci, ale są już zabezpieczenia.
przekazać argumenty do własnych funkcji zrobić to w ten sposób (w którym argument [0] będzie zawierać cały mecz:
result= text.replace(reg , function(){
return wrapper(arguments[0]);
});
Dodatkowo miałem problem w łańcuchu-ucieczki i tym samym regex ekspresja w następujący sposób:
/\s......\s/g
nie jest taki sam jak
new Regex ("\s......\s" , "g")
lub
new Regex ('\s......\s' , "g")
więc należy zachować ostrożność!
mógłby pan wyjaśnić, co masz na myśli używając 'text.replace (/ .../g, myfunc (1 $)); '? Wierzę, że tak naprawdę nie działa, ponieważ '$ 1' musi być w ciągu znaków. – JacobEvelyn
Zobacz mój komentarz do odpowiedzi Joe, a tutaj na przykład: https://github.com/lsauer/KeyBoarder/blob/master/keyboarder.js#L511 –
Nadal nie jestem pewien, czy rozumiem. Używanie funkcji w tym miejscu ma sens, ale oczekiwanie, że '$ 1' ma jakąś wartość, nie ma sensu. – JacobEvelyn