OWASP Regex Repository: Правильно ли это регулярное выражение? - PullRequest
3 голосов
/ 18 мая 2010

Я искал регулярное выражение для проверки различных типов данных из ( OWASP Regex Repositx ).

Одно из регулярных выражений там называется safetext и выглядит так:

* +1007 *

Мой первый вопрос:
Правильно ли это регулярное выражение?

дополнительный вопрос
Если этот Regex Repository вообще хорош?

UPDATE
Мне в основном любопытно, кто не ушел .

1 Ответ

3 голосов
/ 18 мая 2010

Описание регулярного выражения на связанной странице гласит «Строчные и прописные буквы и все цифры». Но регулярное выражение ^[a-zA-Z0-9\s.\-]+$ допускает также пробелы, точки и дефисы.

Регулярное выражение гарантирует, что строка содержит только буквенно-цифровые символы, пробелы, точки и дефисы, а также что строка не пуста. Я не знаком с контекстом, но я предполагаю, что причина, по которой они назвали его безопасным текстом, может заключаться в том, что он запрещает угловые скобки (хотя разрешает обычно используемые символы в текстовых областях) и, таким образом, предотвращает внедрение скрипта.

Точка . не является метасимволом внутри класса символов []. Поэтому вам не нужно выходить за пределы в квадратных скобках.

единственными специальными символами или метасимволами внутри класса символов являются закрывающая скобка (]), обратная косая черта (\), каретка (^) и дефис (* 1016) *). Обычные метасимволы - это обычные символы внутри класса символов, и их не нужно экранировать обратной косой чертой.

Большинство разновидностей регулярных выражений допускают дефисы без экранирования, если вы помещаете их в начало или конец класса персонажа. Дефис в [!#@-] буквальный, а в [!#-@] - нет. Первый означает один из четырех символов, тогда как второй означает !, и все символы между (и включая) значениями ASCII # и @, то есть ASCII от 35 до 64.

А если библиотека вообще хороша, я бы сказал, что это хорошее место для начала. Вы можете изменить их в соответствии с вашими требованиями. Например, их регулярное выражение для паролей показывает, как использовать положительное предпросмотр для проверки наличия по крайней мере одного строчного / верхнего регистра / числового значения и т. Д. Но он допускает только строки длиной от 4 до 8: возможно, вы захотите разрешить более длинные пароли.

...