Я поддерживаю программу, которая использует регулярные выражения TR1 для оценки пользовательского ввода для настроек устройства. Я только что переключил среду сборки для этой программы с Visual Studio 2008 на Visual Studio 2010. Для проверки формы IP-адреса использовалось следующее регулярное выражение:
^([0-9]{1,3})?(\.[0-9]{1,3}){0,3}$
Ниже приведен пример ввода, который должен был быть проверен:
192.168.11.197
По какой-то причине в VS2010 это регулярное выражение больше не проверяет правильно сформированный IP-адрес. Я решил эту проблему, заменив это регулярное выражение на следующее (я нашел это в Регулярное выражение для соответствия имени хоста DNS или IP-адресу? :
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
Мой вопрос: почему прежнее регулярное выражение больше не работает? Я признаю, что не был мастером тонкостей искусства регулярных выражений ASCII, но думал, что у меня есть понятное решение.