Uznalbym siebie za biegły w rozumieniu wyrażeń regularnych; po raz pierwszy byłem zaskoczony, a ostatnie 20 minut wyszukiwania go/wyszukiwania SO dla odpowiedzi nic nie dało.Dopasowanie wyrażenia JavaScript * nie * początek linii
Rozważmy ciąg:
var string = "Friends of mine are from France and they love to frolic."
I chcę, aby zastąpić lub chwytania (lub zrobić coś z) każde wystąpienie "FR" (wielkość liter ma znaczenie).
mogłem użyć, po prostu:
var replaced = string.replace(/fr/gi);
Jednak co zrobić, jeśli chciałam zignorować bardzo pierwsze wystąpienie „FR”? Zazwyczaj używałbym pozytywnego lookbehind (na przykład (?<=.)fr
w php), ale nasz przyjaciel javascript tego nie robi. Bez zainstalowania biblioteki stron trzecich, czy jest jakiś sposób, aby upewnić się, że moje wyrażenie NIE pasuje na początku linii?
Aktualizacja: Chociaż istnieją sposoby zastąpienie zrobionego $1
, mój szczególności use-case jest split()
tutaj, i wymagałoby naprawek tablicę po fakcie jeśli kiedyś coś podobnego sugestię @Explosion pigułki string.replace(/^(fr)|fr/gi, "$1");
Kiedy nie lookbehind, dopasować go w podciąg wzorca i włożyć ją z powrotem: 'zastąpić (/) (FR/pokarmowego, '$' 1andthensomereplace.)'. – Wrikken
@Wrikken moim faktycznym przypadkiem użycia jest tu 'split()' - muszę podzielić na złożone wyrażenie, więc jak dodać to z powrotem do podziału? – brandonscript
@ r3mus jakiej tablicy szukasz? Co masz na myśli przez rekompilację po fakcie? –