(?:https?|mailto|ftp)
соответствует http
или https
или mailto
или ftp
, за которым следует :|[^:/?#]*
, что является альтернативой: :
или что-либо кроме :/>#
, ноль или более раз, а затем следуют(?:[/?#]|$)
, что означает один из /?#
или конец строки ($
).
Будет соответствовать mailto:
, ftp:
, https:
, ftpasda
(любая строканачиная с ftp
, https
, http
, mailto
, за которым следует двоеточие или любое другое число, кроме :/>#
).
UPDATE
После проверки выясняется, что это чередование вне группы без захвата относится не только к двоеточию, но и ко всей группе.Таким образом, если mailto
или какая-либо строка в чередовании не совпадает, механизм регулярных выражений попытается сопоставить шаблон с другой стороны упомянутого чередования.Это пример строки, которая не будет соответствовать: :///////
. Демо-версия.