Я сделал несколько регулярных выражений для тестирования встроенного видео на YouTube:
/^(http:\/\/www\.youtube\.com\/embed\/)[^\/\s\\]+$/
Он работает для того, что я ожидаю, когда проверяю его, но проблема в том, что мне нужно передать это регулярное выражение в виде строки для некоторой функции. В частности, я использую htmlawed, где передаю следующую строку функции:
func('iframe=-*,src(match="/^(http:\/\/www\.youtube\.com\/embed\/)[^\/\s\\]+$/")');
Проблема в том, что вышеупомянутый тип регулярных выражений работает, но он просто игнорирует косые черты и принимает что-либо вместо них.
Вот почему я подозреваю, что есть проблема с побегом.
Я был бы признателен, если бы вы могли посоветовать несколько альтернативных способов избежать этих косых черт и обратных косых черт … должно быть что-то в этом роде?
Если у вас есть строка, вам нужно будет избежать обратных косых черт (и кавычек) для строкового литерала. Или, в зависимости от того, как функция создает регулярное выражение из строки, вам может не понадобиться избегать слэшей вообще (я так не думаю здесь).
"iframe=-*,src(match=\"/^(http:\\/\\/www\\.youtube\\.com\\/embed\\/)[^\\/\\s\\\\]+$/\")"
В PHP вы также можете использовать другой разделитель регулярных выражений:
~^(http://www\.youtube\.com/embed/)[^/\s\\\\]+$~