Ruby 分享下 ruby 匹配 @ 艾特用户名的方法

wikimo · July 20, 2013 · Last by wikimo replied at July 21, 2013 · 4020 hits

需要通过利用@符进行消息通知的功能,前端可以通过 atWho 插件解决,后端需要去解析字符串,研究了 ruby-china 源码,发现对中文用户名匹配似乎不太友好,于是找了资料改进了下,仅供参考。

# coding: utf-8 #正则用于匹配用户名 str = "@wikimo @中國 @水手 测试看看"

#{2,20}字符长度至少2个,不多于20个,以下任意方式匹配 #arr = str.scan(/@([一-龠\w]{2,20}\s)/u).flatten arr = str.scan(/@([\p{Han}+\w]{2,20}\s)/u).flatten

puts arr {% endcodeblock %}

参考资料:

http://ruby-china.org/topics/5680

ruby-china 源码

原文地址:http://wikimo.net/blog/2013/07/20/match-user-reg/

ruby-china 会员名不允许中文,所以不支持。

现在的实现其实很 tricky,因为 _ 会被 markdown 处理,需要先替换掉,markdown 处理完再换回来。你有好的方法欢迎 pull request 好像说的只是提取,前面说的是格式化

不错~ 受教!

@doitian 因为可能有些别的社区它需要支持中文用户名,或者昵称的方式

You need to Sign in before reply, if you don't have an account, please Sign up first.