Какие буквальные символы следует экранировать в регулярном выражении?

Я просто написал регулярное выражение для использования с функцией php preg_match , которое содержит следующую часть:

[\w-.]

Для соответствия любому символу слова, а также минусу знак и точка. Хотя вроде работает в preg_match, Я попытался поместить его в утилиту под названием Reggy , и она жалуется на «Пустой диапазон в классе символов» . Метод проб и ошибок научил меня, что эта проблема была решена путем экранирования знака минус и преобразования регулярного выражения в

[\w\-.]

. Поскольку оригинал, похоже, работает в PHP, мне интересно, почему я должен или не должен избегать знака минус и - поскольку точка также является символом, имеющим значение в PHP - почему мне не нужно экранировать точку. Утилита, которую я использую, просто глупая, работает ли она с другим диалектом регулярных выражений или мое регулярное выражение действительно некорректно, и мне просто повезло, что preg_match позволяет мне избежать неприятностей?

24
задан The Pellmeister 30 March 2011 в 09:03
поделиться