-(defconst riece-channel-regexp
- "\\([+&#]\\|![A-Z0-9]\\{5\\}\\)[^\0\7\r\n ,:]*\\(:[^\0\7\r\n ,:]*\\)?")
-(defconst riece-user-regexp
- "[][\\\\`_^{|}A-Za-z][][\\\\`_^{|}A-Za-z0-9-]\\{0,8\\}")
+(defconst riece-strict-channel-regexp
+ (concat "\\([+&#]\\|!"
+ (riece-make-interval-regexp "[A-Z0-9]" 5)
+ "\\|!!\\)[^\0\7\r\n ,:]*\\(:[^\0\7\r\n ,:]*\\)?"))
+
+(defconst riece-strict-user-regexp
+ (concat "[][\\\\`_^{|}A-Za-z]"
+ (riece-make-interval-regexp "[][\\\\`_^{|}A-Za-z0-9-]" 0 8)))
+
+(defconst riece-laxed-channel-regexp
+ "[+&#!][^\0\7\r\n ,:]*\\(:[^\0\7\r\n ,:]*\\)?")
+
+(defconst riece-laxed-user-regexp
+ "[][\\\\`_^{|}A-Za-z][][\\\\`_^{|}A-Za-z0-9-]*")