2011-03-02 4 views
5

Как использовать регулярное выражение для соответствия нику IRC? Это делается в Ruby, если это имеет значение (возможно, будет с синтаксисом регулярного выражения, но кто знает.)Регулярное выражение в соответствии с псевдонимом IRC

EDIT: ник IRC может содержать любую букву, номер или любой из следующих символов : < - [ ] \^ { }

+2

Каковы правила? – codaddict

+0

Ruby использует PCRE, не так ли? http://stackoverflow.com/questions/3924648/pcre-expression-for-irc-nicknames –

+1

Что может и не может быть в псевдониме IRC? На каких позициях? что ты уже испробовал? Что не сработало? –

ответ

13
# If you are testing a single string 
irc_nick_re = /\A[a-z_\-\[\]\\^{}|`][a-z0-9_\-\[\]\\^{}|`]*\z/i 

# If you are scanning them out of a larger string 
irc_nick_re = /(?<=[^a-z_\-\[\]\\^{}|`])[a-z_\-\[\]\\^{}|`][a-z0-9_\-\[\]\\^{}|`]*/i 

выше позволяет использовать имена односимвольные. Если требуются два символа, измените значение * на +. Если требуется три символа (или больше), измените его на {2,}, где «2» - это минимальное количество символов минус 1.

Если максимальное количество символов (например, EFNet разрешает только псевдонимы до 9 символов, а Freenode - до 16 символов), после чего вы можете включить это число (минус 1) после запятой. Например:

# Validate nicknames that are between 3 and 16 characters long (inclusive) 
irc_nick_re = /\A[a-z_\-\[\]\\^{}|`][a-z0-9_\-\[\]\\^{}|`]{2,15}\z/i 
+3

Я не знаю ни одной популярной сети IRC, которая позволяет «<» в прозвищах. IRCnet, FreeNode, Quakenet, OFTC, Undernet и EFnet все отвергают. Кроме того, вы не должны сопоставлять цифру в начале псевдонима, так как ни одна IRC-сеть не допускает этого. Кроме того, вам не хватает «|», «' »и« _ », которые разрешены. И «\ d» должно быть «0-9» вместо этого, поскольку это единственные допустимые цифры, а не любая цифра Unicode. – Hinrik

+0

@Hinrik Отличные очки! Я совпадал с требованиями OP, но не тестировал их в реальных реалиях. Однако обратите внимание, что ['\ d' не соответствует номерам Unicode в Ruby] (http://stackoverflow.com/questions/6998713/scanning-for-unicode-numbers-in-a-string-with-d). – Phrogz

Смежные вопросы