Основная проблема здесь - ремонтопригодность.
Для меня очевидно, что любой программист, достойный его соли , должен знать регулярные выражения. Не знать их, как, скажем, не знать, что абстракция и инкапсуляция, только, вероятно, хуже. Так что об этом не может быть и речи.
С другой стороны, следует учитывать, что поддержание кода на основе регулярных выражений (написанного на любом языке) может стать кошмаром даже для тех, кто действительно хорош в них. Поэтому, на мой взгляд, правильный подход заключается в том, чтобы использовать их только тогда, когда это неизбежно и когда код, использующий регулярное выражение, будет более читабельным, чем его вариант без регулярного выражения. И, конечно, как уже указывалось, не используйте их для чего-то, чего они не должны делать (например, xml). И никакой проверки адреса электронной почты тоже (одна из моих любимых мозолей: P)!
А если серьезно, разве не плохо, когда вы используете все эти substr s для чего-то, что может быть решено с помощью нескольких символов, похожих на шум строки? Я знаю, что это для меня.