我使用一个系统来获取@twitter 之类的名称,并且以下正则表达式接近完美:
(?<![^\s<>])@([^\s<>]+)
我发现的问题是名称后面是否有标点符号
例如:
- 嘿 @mark ===> 匹配 @mark (这就是我们想要的)
- 嘿@mark。===> 匹配@mark。
- 嘿@mark,你很好===>匹配@mark,
- 嘿@马克!!!!我没想到 ===> 匹配 @mark !!!
显然我们只想匹配用户名而不是标点符号。需要注意的是,某些用户名在用户名中包含这些句点,例如
例如,这些都是合法的用户名
标记.markus
马克@gmail.com
mark_markus@gmail.com
编辑 我们正在使用后视,如果上面的用户名与前面的@一起使用,它们应该匹配,但如果没有前面的@,那么电子邮件地址实际上不应该匹配。@mark_markus@gmail.com 应该匹配 mark_markus@gmail.com,但如果有人输入普通的旧 mark_markus@gmail.com,我们不希望 gmail.com 匹配。
关于如何修改正则表达式以解释可以使用的各种标点符号的任何想法?