В основном вам нужно сделать, чтобы у вас была проверка @
и .
символа в электронной почте или .
в weburl, вам нужно улучшить регулярное выражение и поставить альтернативы @
символа каквы ожидаете.Итак,
@ should be written as (?:@|[[({]at[\]})])
И,
\. should be written as (?:\.|[[{(]dot[\]})])
, где бы вы ни находились в вашем регулярном выражении, а затем он также будет фильтровать эти строки.
Вот модифицированныйregex для электронной почты.
(?:[a-z0-9!#$%&'*+=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")(?:@|[[({]at[\]})])(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\.|[[{(]dot[\]})]))+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Regex Demo для электронной почты
Таким же образом вы можете заменить .
на своем веб-сайте regex и на вашем измененномregex становится этим,
(?:(?:(?:http|https|ftp|ftps)\:\/\/)|www(?:\.|[[{(]dot[\]})]))(?:[a-zA-Z0-9.-]|[[{(]dot[\]})])+(?:\.|[[{(]dot[\]})])[a-zA-Z]{2,4}(\/\S*)?
Regex Demo для веб-адреса
Теперь помимо сопоставления [dot]
, {dot}
и (dot)
, регулярное выражение также будет соответствовать [dot}
и аналогичным, и, поскольку вы пытаетесь обнаружить такие строки дальше, следовательно, сопоставление этих строк будет дополнительным преимуществом, а не проблемой, если контекст не был иным.