Все зависит от того, что вы подразумеваете под действительным URL или действительным адресом электронной почты.
Например, a@b-.c
- вы можете отфильтровать домены верхнего уровня, чтобы исключить .c
, но список доменов верхнего уровня не является постоянным. Более того, все символы действительны. Даже если это выглядит странно и почти наверняка недействительно, многие фильтры регулярных выражений тоже его проверят.
С электронной почтой a@b-.c
или URL http://.
, если они отображаются или используются в ссылках, они не причинят вреда, даже если они никуда не денутся.
Я думаю, что часть проблемы заключается в том, насколько свободны ваши фильтры. Если большое беспокойство вызывает XSS или SQL-инъекция или иное предотвращение опасного ввода, независимо от того, пригодно ли значение для использования или нет, это может не иметь значения, поэтому этот вид фильтра может помочь.
Если вы хотите убедиться, что значение не только безопасное, но и пригодное для использования, это хитрый зверь.