Регулярні вирази (RegExp) в JavaScript

  1. Приклад 1 (є / немає)
  2. Приклад 2 (Пошук і заміна)
  3. Приклад 3 (Пошук і заміна 2)
  4. Приклад 4 (Пошук і отримання даних)
  5. Післямова

Під час розробки дуже часто доводиться вдаватися до роботи з текстом. У цій статті піде мова про регулярні вирази в JavaScript (RegExp), а так же я приведу декілька часто використовуваних прикладів. Я не стану писати вам визначення, що це таке, так як в інтернеті і там достатньо інформації по цій темі. Я хочу лише навести кілька прикладів, щоб ви могли вибрати для себе підходящий. Я дуже довгий час витратив на те, щоб знайти нормальний джерело, де все буде докладно описано. Особисто для вас я цей процес прискорю написавши цю невелику запис.

Приклад 1 (є / немає)

Рівень: Легко

Давайте уявимо, що у вас є таке речення - «Hello, this is simple message.» І вам потрібно перевірити чи є в ньому слово «message»?

Для цього прикладу я створив наступне демо:

See the Pen grNpWy by Alexander ( @bologer ) on CodePen .21516

В наведеному вище прикладі, змінна text включає в себе слово «message», а в змінної text2 немає. Далі я створив регулярний вираз / message / gi, яке означає наступне: я шукаю слово «message», а дві букви після «/» означають наступне: g - робити глобальний пошук по всьому пропозицією, а i, що без різниці як буде написано слово , ось так «MeSsagE» або «MESSAGE».

В результаті в прикладі в виводиться лише В text є поєднання "message"., Бо тільки в text є таке слово.

Приклад 2 (Пошук і заміна)

Рівень: Легко

Давайте тепер уявімо, що у вас є наступний текст: «Hello, this is another text, which has a lot of text in iside of the text.» І ви хочете замінити всі «text» слова на «текст». Детальніше дивіться приклад нижче.

See the Pen PzAqOr by Alexander ( @bologer ) on CodePen .21516

У цій прикладі я використовував .replace () + регулярний вираз для пошуку і заміни потрібної частини рядка. Першим параметром потрібно задати регулярний вираз, другим текст (на що потрібно замінити).

.replace () один за іншим буде міняти збіги в тексті, поки вони не закінчаться.

Приклад 3 (Пошук і заміна 2)

Рівень: складно

Припустимо у мене є такий рядок: «$ # uygdgY76173 # $ Hello $ # uygdgY76173 # $. This is new message :) Hello $ # uygdgY76173 # $ $$ JI! 817dt6717, string »і я хочу замінити всі« $ # {букви_ілі / і_ціфри} # $ »на« <b data-value = "$ # {букви_ілі / і_ціфри} # $ »> {букви_ілі / і_ціфри} </ b>».

Для цього мені знадобитися наступне регулярний вираз:

/ \ $ \ # ([A-z0-9] {1,}) \ # \ $ / gi

В «()» я згрупував частина рядка, яку я хочу надалі десь використовувати. А точніше в моєму випадку, я додаю значення сгруппированного з «()» всередині <b> </ b> елемента. Перша група буде відзначена як «$ 1», друга як «$ 2» і так далі. «$ &» Означає те, що я хочу скопіювати повністю текст в data-value = "".

{1,} означає, що я очікую, що значення між «[]» має дорівнювати одному або більше символів.

Далі дивіться живий приклад нижче.

See the Pen NAkqZA by Alexander ( @bologer ) on CodePen .21516

Приклад 4 (Пошук і отримання даних)

Рівень: легко

Для цього прикладу мені знадобитися такий рядок: «http://helloworld.com/goodurl/path/etc/something-else», яка є посиланням.

Я хочу отримати «something-else» з цього посилання.

Для цього нам знадобитися наступне регулярний вираз, які показано у коді нижче:

21516

З прикладу вище, re - це регулярний вираз, які я написав, щоб отримати кінець посилання. Якщо подивитися уважніше, то я вибираю всі букви «az», а так само «-«, щоб тире які розділяє something-else потрапило під правило. Таким чином ви можете додати будь-які інші символи, якщо очікуєте якісь інші символи на засланні.

«{1,}» означає, що я очікую один символ і більш і «$» означає, що я регулярний вираз має дивитися тільки на кінець рядка. І в самому кінці регулярного виразу я використовую «g» і «i», значення яких я вже описав вище в цьому записі.

Саме останнє, що залишається зробити - це використовувати метод .exec () , Який допоможе нам отримати збіги по регулярному виразу. Використання цього методу має бути наступним чином: регулярное_вираженіе.exec (ваша_строка).

Після запуску exec - він повертає масив. Нульова позиція завжди буде рядок (string), яка була пропущена через нього. Тим самим якщо у нас щось було знайдено через регулярний вираз, нам потрібно перевірити першу позицію і інші. Якщо у вас так само щось є на другій позиції - re.exec (string) [2], то у вас знайшлося більше ніж один збіг в string.

Післямова

У мене піде не одну десятку років, щоб описати всі приклади регулярних виразів. Для того, що коротко описати що це таке і як їх використовувати - я лише навів чотири часто використовуваних прикладу. Якщо ви знаєте ще якісь, я буду радий подивитися на них в коментарях під цим записом. Я особисто, досить часто використовую регулярні вирази для вирішення будь-яких завдань. А як і де ви використовуєте їх? І іcпользуете взагалі?

Так само хочу порадити сервіс - regex101.com , Який дозволяє в режимі реального часу створювати нові регулярні вирази, писати текст для перевірки, а так само можливість автоматично згенерувати РВ для PHP, JavaScript і Python.

джерела

» І вам потрібно перевірити чи є в ньому слово «message»?
А як і де ви використовуєте їх?
І іcпользуете взагалі?