Регулярні вирази (RegExp) в JavaScript
- Приклад 1 (є / немає)
- Приклад 2 (Пошук і заміна)
- Приклад 3 (Пошук і заміна 2)
- Приклад 4 (Пошук і отримання даних)
- Післямова
Під час розробки дуже часто доводиться вдаватися до роботи з текстом. У цій статті піде мова про регулярні вирази в 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пользуете взагалі?