Что случилось с шаблоном [] в php? [Дубликат]

Я не уверен ни в одном из остальных, но я знаю, что SQLite и MySQL не имеют никакого упорядочения строк по умолчанию. В этих двух диалектах, по крайней мере, следующий фрагмент захватывает 15-ю запись из таблицы, сортируя по дате / времени, когда она была добавлена:

SELECT * FROM the_table ORDER BY added DESC LIMIT 1,15

(конечно, вам нужно будет добавить DATETIME и установите дату / время, в которое была добавлена ​​запись ...)

45
задан Wintermute 21 April 2015 в 12:14
поделиться

3 ответа

Поскольку ваш класс символов [A-z] соответствует этому символу.

[A-z] соответствует [, \, ], ^, _, ` и английские буквы.

На самом деле это распространенная ошибка. Вы должны использовать [a-zA-Z] вместо того, чтобы разрешать только английские буквы.

Вот визуализация из Expresso, показывающая, что на самом деле охватывает диапазон [A-z]:

screenshot from Expresso showing the ASCII table, where you can see what the [A-z] range actually covers [/g1]

Итак, это регулярное выражение (с опцией i) не будет записывать вашу строку.

^(?=.*[0-9])(?=.*[a-z])[0-9a-z-]{17}$

На мой взгляд, это всегда безопаснее использовать опцию Ignorecase, чтобы избежать такой проблемы и сократить регулярное выражение.

127
ответ дан user2314737 22 August 2018 в 11:00
поделиться

Вы разрешаете A-z (капитал «A» через нижний «z»). Вы не говорите, какой пакет регулярных выражений вы используете, но не обязательно ясно, что A-Z и a-z смежны; между ними могут быть другие символы. Попробуйте это вместо:

^(?=.*[0-9])(?=.*[A-Za-z])[0-9A-Za-z-]{17}$

Кажется, что я отвечаю вашим критериям для меня в regexpal.

5
ответ дан Marc Fraioli 22 August 2018 в 11:00
поделиться

regex использует ASCII печатные символы из пробела в диапазон тильдов.

Всякий раз, когда мы используем маркер [A-z], он соответствует следующей таблице выделенных символов. Если мы используем маркер [ -~], он соответствует начиная с SPACE до тильды.

15
ответ дан Premraj 22 August 2018 в 11:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: