正则表达式匹配IRC昵称

时间:2011-03-02 04:04:22

标签: regex irc

我如何使用正则表达式来匹配IRC昵称?这是在Ruby中完成的,如果这有所不同(它可能会与正则表达式的语法一起,但谁知道。)

编辑:IRC昵称可以包含任何字母,数字或以下任何字符:< - [ ] \ ^ { }

1 个答案:

答案 0 :(得分: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