Соответствует концу строки в PHP

0

Учитывая строку и регулярное выражение, как я могу убедиться, что он соответствует всей строке? То есть, я не хочу, чтобы новая строка запускала конец совпадения - я хочу, чтобы она соответствовала самому концу строки.

Пример:

<?php
// simplified date pattern
$pattern = "/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/";
$d = "2014-01-05\n"; // OOPS - this will match
if(preg_match($pattern, $d)) {
    echo "This is a date string.";
}
  • 0
    Что, если сначала trim его?
Теги:
newline

2 ответа

4
Лучший ответ

Используйте модификатор D:

D (PCRE_DOLLAR_ENDONLY)
Если этот модификатор установлен, метасимвол доллара в шаблоне соответствует только в конце строки темы. Без этого модификатора доллар также соответствует непосредственно перед конечным символом, если он является символом новой строки (но не раньше любых других строк перевода).

$pattern = "/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/D";
0

Вам нужно будет использовать многострочный шаблонный модификатор m следующим образом:

$pattern = "/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/m"; // note m at end after pattern
  • 1
    Как это поможет?
  • 1
    От ОП: «То есть я не хочу, чтобы перевод строки вызывал конец матча»
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню