İlk fonksun neredeyse haklı. 'Global' (düzenle) anlamına gelen 'g' bayrağını kaldırın ve ikinci 'r' yi tespit etmek için bir bağlam verin.
Düzenleme: daha önce ikinci 'r' olduğunu görmedim, bu yüzden '/' eklendi. Bir regEx arg kullanırken '/' karakterinden kaçmak için \ / gerekir. Upvotes için teşekkürler ama yanıldım, bu yüzden regEx'in temellerini daha iyi anlamak isteyen insanlar için daha fazla ayrıntı ekleyeceğim ve düzelteceğim ama bu işe yarayacak:
mystring.replace(/\/r/, '/')
Şimdi aşırı açıklama için:
Bir regEx kalıbını okurken / yazarken: <a karakter veya karakter kümesi> ardından <a karakter veya karakter kümesi> ve ardından <...
RegEx <a karakterinde veya karakter kümesinde> birer birer olabilir:
/each char in this pattern/
Bu yüzden e, ardından a, ardından c vb.
Veya tek bir <a karakter veya karakter kümesi> bir karakter sınıfı tarafından tanımlanan karakterler olabilir:
/[123!y]/
//any one of these
/[^123!y]/
//anything but one of the chars following '^' (very useful/performance enhancing btw)
Veya bir miktar karakteri eşleştirmek için genişletildi (ancak sıralı desen açısından tek bir öğe olarak düşünmek en iyisi):
/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)
Bu yüzden bir grup birlikte söyle:
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"]
Ve tabii ki aşırı detaylandırdım ama benim açımdan basitçe:
/cat/
3 desen öğesinden oluşan bir dizidir (bir şeyi izleyen bir şeyi izleyen bir şey).
Ve bu da:
/[aA]{4,8}(Eat at Joes|Joes all you can eat)[0-5]+/
RegEx bakmaya başladığında, hepsi birbirini takip eden bir dizi şeye (potansiyel olarak çok karakterli şeyler) ayrılır. Tür temel bir nokta ama geçmiş almak için biraz zaman aldı bir yüzden bu yüzden burada OP açıklayan ve ben regEx için yeni neler yardımcı olur regEx yardımcı olacağını düşünüyorum denize açık gitti. RegEx'i okumanın / yazmanın anahtarı onu bu parçalara ayırmaktır.