我正在尝试编写一个与大多数常见表情符号匹配的正则表达式,但如果它们位于链接中则不会。
我的表情符号为:P
=P
:-P
=-P
:)
:-)
=)
=-)
{ {1}} :/
=/
:-/
=-/
:o
=o
:-o
=-o
:(
{ {1}} :-(
=(
=-(
:D
:d
:-D
:-d
=D
=d
< / p>
我不希望=-D
与=-d
我也不希望http://
在:/
我不能使用空格作为分隔符,因为我希望人们能够像这样背靠背键入多个表情符号:http://something.com?feature=player
我当前的正常表达式几乎正在运行:
:p
问题是链接中只省略了第一个表情匹配,而不是全部。
我一直在使用Grant Skinner's Regexr进行测试。
答案 0 :(得分:1)
匹配正则表达式中的所有URL本身就是一项非常复杂的任务......也许,除非您感到特别挑战,否则不值得尝试。编写一个解析所需内容的函数要容易得多。但是,一个很好的近似URL可能是/\w+([-+]\w+)*:[^\s]+/
(一些示例可以让您更好地理解为什么会这样:svn+ssh://localhost
,ftp://site_name.ouch.auch/~directory/?paramter:=)#anch:o)r
,https://Новости-Советского-Информ-Бюро.рф/С%25Новым%25Годом!
)。所有这些都是有效的URL:)
所以,我的策略是首先消除看似可能是URL的东西(这有时候会抓住微笑,因为用户最终可能会通过写笑脸创建一个有效的URL),并解析其余的。 / p>
答案 1 :(得分:0)
尝试模式
(?:(?<!http)(?<!http:):/(?![a-zA-Z0-9])|:-/|=-?/|[:=]-?[()]|[:=]-?[PDdo](?!$)(?![a-zA-Z0-9=]))