【问题标题】:Regular expression to match IRC nickname匹配 IRC 昵称的正则表达式
【发布时间】:2012-05-03 22:39:47
【问题描述】:

如何使用正则表达式来匹配 IRC 昵称?这是在 Ruby 中完成的,如果这会产生影响(它可能会,使用正则表达式的语法,但谁知道。)

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

【问题讨论】:

  • Ruby 使用 PCRE,不是吗? stackoverflow.com/questions/3924648/…
  • IRC 昵称中可以和不可以是什么?在什么位置?你试过什么了?什么不起作用?
  • @codaddict:你什么意思?规则是匹配任何 IRC 昵称。
  • @Satya:不是真的,IRC 昵称中只允许使用某些字符。我编辑了我的答案以包括在内。
  • “任何字母”是指“拉丁字母表中的任何字母”吗?

标签: regex irc


【解决方案1】:
# 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 

【讨论】:

  • 我不知道任何流行的 IRC 网络允许在昵称中使用“
  • @Hinrik 好点!我根据 OP 的要求进行匹配,但没有针对实际实现进行测试。但是,请注意 \d does not match Unicode digits in Ruby.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
相关资源
最近更新 更多