Еще, поди, работает?
Работать то работает, только это абракадабра бессмысленная для зрелищности.
Можно сократить до [;']';'\][';.\[]==[":;'>?{]:"?", не то чтобы это добавило смысла.)
Можно сократить до [;']';'\][';.\[]==[":;'>?{]:"?", не то чтобы это добавило смысла.)
/
[;']';'[\]][';.';\[][=]\=[":;'>>?{:>?"]:"?"
/
gm
Match a single character present in the list below [;']
;' matches a single character in the list ;' (case sensitive)
';' matches the characters ';' literally (case sensitive)
Match a single character present in the list below [\]]
\] matches the character ] literally (case sensitive)
Match a single character present in the list below [';.';\[]
';.'; matches a single character in the list ';. (case sensitive)
\[ matches the character [ literally (case sensitive)
Match a single character present in the list below [=]
= matches the character = literally (case sensitive)
\= matches the character = literally (case sensitive)
Match a single character present in the list below [":;'>>?{:>?"]
":;'>>?{:>?" matches a single character in the list ":;'>?{ (case sensitive)
: matches the character : literally (case sensitive)
"? matches the character " literally (case sensitive)
? Quantifier — Matches between zero and one times, as many times as possible, giving back as needed (greedy)
" matches the character " literally (case sensitive)
Global pattern flags
g modifier: global. All matches (don't return after first match)
m modifier: multi line. Causes ^ and $ to match the begin/end of each line (not only begin/end of string)
[;']';'[\]][';.';\[][=]\=[":;'>>?{:>?"]:"?"
/
gm
Match a single character present in the list below [;']
;' matches a single character in the list ;' (case sensitive)
';' matches the characters ';' literally (case sensitive)
Match a single character present in the list below [\]]
\] matches the character ] literally (case sensitive)
Match a single character present in the list below [';.';\[]
';.'; matches a single character in the list ';. (case sensitive)
\[ matches the character [ literally (case sensitive)
Match a single character present in the list below [=]
= matches the character = literally (case sensitive)
\= matches the character = literally (case sensitive)
Match a single character present in the list below [":;'>>?{:>?"]
":;'>>?{:>?" matches a single character in the list ":;'>?{ (case sensitive)
: matches the character : literally (case sensitive)
"? matches the character " literally (case sensitive)
? Quantifier — Matches between zero and one times, as many times as possible, giving back as needed (greedy)
" matches the character " literally (case sensitive)
Global pattern flags
g modifier: global. All matches (don't return after first match)
m modifier: multi line. Causes ^ and $ to match the begin/end of each line (not only begin/end of string)
Сука сколько же времени было проебанно на создание сраных регулярок ..... а альтернативу уже придумали ?
А как ты это себе представляешь?
Как вариант, parsing combinators. Но, конечно же, адекватность их как альтернативы зависит от задачи. Простейший .* - нужно репу почесать, чтоб понять, как на них это выразить
Вот я занимаюсь администрированием сетевого железа, и в свободное время пытаюсь немного автоматизировать некоторые задачи через баш скрипты, и регулярки просто взрывают мой мозг. Сразу чувствуешь свою никчемность и тщетность бытия.
Самое "весёлое" в регулярках что я видел, это валидация емейлов:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[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])+)\])
Но, имхо, с емейлами это нахрен не надо, юзер сам себе злой буратино.
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[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])+)\])
Но, имхо, с емейлами это нахрен не надо, юзер сам себе злой буратино.
Так валидация email не юзеру нужна, а тому, кто адреса собирает, чтоб по ним спамить потом чтоб поддерживать контакт.
Ну и задачи вроде отсылки верификационной ссылки/кода туда же, лучше ещё на форме регистрации всякую хрень отсеять.
Ну и задачи вроде отсылки верификационной ссылки/кода туда же, лучше ещё на форме регистрации всякую хрень отсеять.
1) Вроде, это не полная регулярка для валидации email согласно стандарту RFC-822. Где-то видел, это пиздец.
2) Большинство почт (тот же гугл) имеют более жесткие рамки, чем RFC-822
2) Большинство почт (тот же гугл) имеют более жесткие рамки, чем RFC-822
В данном случае это RFC 5322, честно спизженное.
Как-то кто-то скидывал тут - на пол страницы регулярочка.
Чтобы написать коммент, необходимо залогиниться