JavaScript String.Replace () مثال مع RegEx

تعد التعبيرات العادية (تسمى أيضًا RegEx أو RegExp) طريقة فعالة لتحليل النص. باستخدام RegEx ، يمكنك مطابقة السلاسل في نقاط تطابق أحرفًا معينة (على سبيل المثال ، JavaScript) أو أنماط (على سبيل المثال ، NumberStringSymbol - 3a &).

تُستخدم .replaceالطريقة على السلاسل في JavaScript لاستبدال أجزاء من السلسلة بأحرف. غالبًا ما يتم استخدامه على النحو التالي:

const str = 'JavaScript'; const newStr = str.replace("ava", "-"); console.log(newStr); // J-Script 

كما ترى أعلاه ، يقبل التابع replace وسيطتين: السلسلة المراد استبدالها ، والسلسلة التي سيتم استبدالها.

هنا يأتي دور Regex .

استخدام ما ورد .replaceأعلاه محدود: الأحرف التي سيتم استبدالها معروفة - "ava". ماذا لو كنا مهتمين بنمط بدلاً من ذلك؟ ربما يستخدم رقم وحرفين وكلمة "فو" أو ثلاثة رموز معًا؟

و .replaceالطريقة المستخدمة مع RegExيمكن تحقيق ذلك. RegExيمكن استخدامها بشكل فعال لإعادة إنشاء الأنماط. لذا فإن الجمع بين هذا .replaceيعني أنه يمكننا استبدال الأنماط وليس فقط الأحرف الدقيقة.

كيفية استخدام RegExمع .replaceفي JavaScript

لاستخدام RegEx ، replaceسيتم استبدال الوسيطة الأولى من صيغة regex ، على سبيل المثال /regex/. يعمل بناء الجملة هذا كنمط حيث سيتم استبدال أي أجزاء من السلسلة تتطابق مع السلسلة الفرعية الجديدة.

هذا مثال:

// matches a number, some characters and another number const reg = /\d.*\d/ const str = "Java3foobar4Script" const newStr = str.replace(reg, "-"); console.log(newStr); // "Java-Script" 

3foobar4تتطابق السلسلة مع regex /\d.*\d/، لذا يتم استبدالها.

ماذا لو أردنا إجراء عمليات الاستبدال في أماكن متعددة؟

Regexيقدم بالفعل ذلك مع gالعلامة (العالمية) ، ويمكن استخدام نفس الشيء مع replace. إليك الطريقة:

const reg = /\d{3}/g const str = "Java323Scr995ip4894545t"; const newStr = str.replace(reg, ""); console.log(newStr); // JavaScrip5t // 5 didn't pass the test :( 

يتطابق التعبير المعتاد مع أجزاء السلسلة التي تتكون من 3 أرقام متتالية بالضبط. 323يطابقه 995ويطابقه 489ويطابقه 454ويطابقه. لكن الأخير 5لا يتطابق مع النمط.

والنتيجة هي JavaScrip5tإظهار كيفية مطابقة الأنماط بشكل صحيح واستبدالها بسلسلة فرعية جديدة (سلسلة فارغة).

علم الحالة - iيمكن استخدامه أيضًا. هذا يعني أنه يمكنك استبدال الأنماط غير الحساسة لحالة الأحرف. إليك كيفية استخدامه:

const reg1 = /\dA/ const reg2 = /\dA/i const str = "Jav5ascript" const newStr1 = str.replace(reg1, "--"); const newStr2 = str.replace(reg2, "--"); console.log(newStr1) // Jav5ascript console.log(newStr2) // Jav--script 

..5a..لا يتطابق مع الصيغة الأولى لأن التعبير العادي حساس لحالة الأحرف بشكل افتراضي. ولكن مع استخدام iالعلم ، كما هو موضح في الصيغة الثانية ، فإن السلسلة كما هو متوقع - تم استبدالها.

كيفية استخدام الانقسام مع التعبيرات العادية

splitيستخدم أيضا RegEx. مما يعني أنه يمكنك تقسيم سلسلة ليس فقط عند السلاسل الفرعية التي تطابق الأحرف الدقيقة ، ولكن أيضًا الأنماط.

إليك نظرة سريعة:

const regex = /\d{2}a/; const str = "Hello54 How 64aare you"; console.log(str.split(regex)) // ["Hello54 How ", "are you"] 

كانت السلسلة splitفي 64aلأن هذه السلسلة الفرعية تطابق التعبير العادي المحدد.

لاحظ أن العلم العالمي - g- in splitغير ذي صلة ، على عكس iالعلم والأعلام الأخرى. هذا بسبب splitتقسيم السلسلة في عدة نقاط يطابقها التعبير العادي.

تغليف

RegExتجعل replaceالسلاسل في JavaScript أكثر فعالية وقوة ومتعة.

أنت لست مقيدًا فقط بالأحرف الدقيقة ولكن الأنماط والبدائل المتعددة في وقت واحد. في هذه المقالة ، رأينا كيف يعملون معًا باستخدام بعض الأمثلة.

تحياتي إلى RegEx؟