Func đầu tiên của bạn là gần như đúng. Chỉ cần xóa cờ 'g' là viết tắt của 'toàn cầu' (chỉnh sửa) và cung cấp cho nó một số bối cảnh để phát hiện ra 'r' thứ hai.
Chỉnh sửa: không thấy đó là 'r' thứ hai trước khi thêm '/'. Cần \ / để thoát '/' khi sử dụng đối số regEx. Cảm ơn các upvote nhưng tôi đã sai nên tôi sẽ sửa chữa và thêm chi tiết cho những người quan tâm tìm hiểu cơ bản về regEx tốt hơn nhưng điều này sẽ hoạt động:
mystring.replace(/\/r/, '/')
Bây giờ cho lời giải thích quá mức:
Khi đọc / viết một mẫu regEx, hãy nghĩ theo các khía cạnh: <a character hoặc set charcters> theo sau là <a character hoặc set charcters> theo sau là <...
Trong regEx <a ký tự hoặc bộ charcters> có thể là một lần:
/each char in this pattern/
Vì vậy, đọc như e, theo sau là a, tiếp theo là c, v.v ...
Hoặc một ký tự <a hoặc bộ charcters> có thể là các ký tự được mô tả bởi một lớp ký tự:
/[123!y]/
//any one of these
/[^123!y]/
//anything but one of the chars following '^' (very useful/performance enhancing btw)
Hoặc được mở rộng để phù hợp với số lượng ký tự (nhưng vẫn tốt nhất để nghĩ là một yếu tố duy nhất theo mô hình tuần tự):
/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)
Vì vậy, smoosh một bó với nhau:
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"]
Và tất nhiên tôi đã xây dựng quá mức nhưng quan điểm của tôi chỉ đơn giản là thế này:
/cat/
là một chuỗi gồm 3 yếu tố mẫu (một thứ theo sau là một thứ).
Và đây là:
/[aA]{4,8}(Eat at Joes|Joes all you can eat)[0-5]+/
Khi lập dị như regEx bắt đầu tìm kiếm, tất cả đều chia thành hàng loạt thứ (có khả năng là nhiều thứ) theo sau nhau. Một điểm cơ bản nhưng một điểm khiến tôi mất một thời gian để vượt qua vì vậy tôi đã quá nhiệt tình giải thích nó ở đây vì tôi nghĩ đó là một điểm sẽ giúp OP và những người khác mới biết regEx hiểu những gì đang diễn ra. Chìa khóa để đọc / ghi regEx là chia nó thành các phần.