Javascript, replace *&^%$#@!
Ви знаєте як замінити в тексті одну послідовність символів іншою? Наприклад всі прогалики – на символ підкреслювання. Метод replace()? Вгадали:
> 'this is a test'.replace(' ', '_')
'this_is a test'
Ой, а чого воно лише одну заміну зробило? Бо таке воно ліниве падло. Хочете глобальної заміни – передайте шаблон регулярного виразу який співставляється глобально:
> 'this is a test'.replace(/ /g, '_') 'this_is_a_test'
Працює! А тепер уявімо що нам треба замінити наприклад не прогалик а трубу:
> 'a|b|c|d'.replace(/|/g, '_') '_a_|_b_|_c_|_d_'
Ну так, треба не забувати що деякі символи в регулярних виразах мають спеціальне значення і їх треба екранувати:
> 'a|b|c|d'.replace(/\|/g, '_') 'a_b_c_d'
А якщо раптом ви не хочете нічого знати про ці регулярні вирази (або ваш користувач не хоче), то є таки спосіб глобальної заміни підрядка. Знаєте який? StackOverflow підкаже:
> 'a|b|c|d'.split('|').join('_')
'a_b_c_d'
І я не знаю що на це сказати. Піду краще посплю.


Онлайн тестування регулярних виразів — https://regex101.com/r/yE6rW7/1
Там ще й розбір робиться. І можна тестувати багатьма рушіями, типу Javascript чи Perl тощо.
harmyder
2 Жовтня, 2016 at 08:21