【发布时间】:2012-03-14 12:46:04
【问题描述】:
我知道这个问题是answered in accordance with RFC 1459。但是如何根据 RFC 2811-2813 使用正则表达式来匹配频道呢?
RFC 2811 规定:
频道名称是字符串(以“&”、“#”、“+”或“!”开头 字符),长度不超过五十 (50) 个字符。频道名称是 不区分大小写。
除了要求第一个字符是 '&'、'#'、'+' 或 '!' (以下称为“频道前缀”)。唯一的 对频道名称的限制是它不得包含任何空格 (' '), 控制 G (^G 或 ASCII 7), 逗号 (',' 用作 协议的列表项分隔符)。此外,冒号 (':') 用作 通道掩码的分隔符。频道名称的确切语法 在“IRC 服务器协议”[IRC-SERVER] 中定义。
作为补充,RFC 2812 指出:
channel = ( "#" / "+" / ( "!" channelid ) / "&" ) chanstring [ ":" chanstring ] chanstring = %x01-07 / %x08-09 / %x0B-0C / %x0E-1F / %x21-2B chanstring =/ %x2D-39 / %x3B-FF ; any octet except NUL, BELL, CR, LF, " ", "," and ":" channelid = 5( %x41-5A / digit ) ; 5( A-Z / 0-9 )
【问题讨论】:
-
所以给出答案
/([#&][^\x07\x2C\s]{,200})/(来自您的链接问题),您将如何修改它以匹配您的新规范? -
@GregHewgill 这是正确的。真正让我感到困惑的是
channelid卡在中间。 -
谢谢,这有助于澄清您真正要问的问题。