Twój pierwszy func jest prawie właściwy. Po prostu usuń flagę „g”, która oznacza „globalny” (edytuj) i daj jej kontekst, by rozpoznał drugą „r”.
Edycja: wcześniej nie widziałem, żeby to był drugi „r”, dlatego dodałem „/”. Potrzebuje \ /, aby uciec przed „/” podczas używania argumentu regEx. Dzięki za opinie, ale się myliłem, więc poprawię i dodam więcej szczegółów dla osób zainteresowanych lepszym zrozumieniem podstaw regEx, ale to zadziała:
mystring.replace(/\/r/, '/')
Teraz nadmierne wyjaśnienie:
Czytając / pisząc wzór regEx, pomyśl w kategoriach: <a znak lub zestaw znaków> następnie znak <a lub zestaw znaków> następnie <...
W regEx <a znak lub zestaw znaków> może być pojedynczo:
/each char in this pattern/
Więc czytaj jako e, następnie a, a następnie c itd.
Lub pojedynczy <a znak lub zestaw znaków> może być znakami opisanymi przez klasę znaków:
/[123!y]/
//any one of these
/[^123!y]/
//anything but one of the chars following '^' (very useful/performance enhancing btw)
Lub rozwinięty, aby dopasować liczbę znaków (ale nadal najlepiej myśleć o nim jako o pojedynczym elemencie pod względem wzoru sekwencyjnego):
/a{2}/
//precisely two 'a' chars - matches identically as /aa/ would
/[aA]{1,3}/
//1-3 matches of 'a' or 'A'
/[a-zA-Z]+/
//one or more matches of any letter in the alphabet upper and lower
//'-' denotes a sequence in a character class
/[0-9]*/
//0 to any number of matches of any decimal character (/\d*/ would also work)
Więc połącz kilka:
var rePattern = /[aA]{4,8}(Eat at Joes|Joes all you can eat)[0-5]+/g
var joesStr = 'aaaAAAaaEat at Joes123454321 or maybe aAaAJoes all you can eat098765';
joesStr.match(rePattern);
//returns ["aaaAAAaaEat at Joes123454321", "aAaAJoes all you can eat0"]
//without the 'g' after the closing '/' it would just stop at the first match and return:
//["aaaAAAaaEat at Joes123454321"]
I oczywiście przesadziłem, ale miałem na myśli to, że:
/cat/
to seria 3 elementów wzoru (rzecz, po której następuje rzecz, po której następuje rzecz).
I to jest tak:
/[aA]{4,8}(Eat at Joes|Joes all you can eat)[0-5]+/
Tak dziwaczny, jak regEx zaczyna wyglądać, wszystko rozkłada się na szereg rzeczy (potencjalnie wieloznakowych) następujących po sobie. Niby podstawowy punkt, ale zajęło mi to trochę czasu, więc przesadziłem, tłumacząc to tutaj, ponieważ myślę, że pomógłby OP i innym nowicjuszom w zrozumieniu, co się dzieje. Kluczem do czytania / pisania regEx jest rozbicie go na te kawałki.