Bot Framework Skype频道正则表达式不起作用

时间:2018-01-10 14:01:23

标签: node.js regex botframework skype

我使用Bot Framework(node.js)构建了一个机器人,它有四个连接的通道(Messenger,Telegram,Skype和Web)。在任何时候,机器人使用如下所示的正则表达式验证输入的电子邮件地址:

/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i

除了Skype之外,它在所有频道上都能正常运行。例如: gcfabri@gmail.com 与此正则表达式匹配,但在Skype频道上它不会发生。

2 个答案:

答案 0 :(得分:0)

根据问题nwhitmont的GitHub用户@nilsw(Stack Overflow [Skype] Regular expression not working to find email address in chat message? #4024):

  

Skype将电子邮件地址包装在HTML标签中,因此您需要相应地调整您的RegEx。

     

在Skype频道上,您需要检查:

     

<a href="mailto:name@email.com">name@email.com</a>

答案 1 :(得分:0)

我也面临着同样的问题,并通过使用以下正则表达式解决了。

@"\b(?!mailto:)([\w-]+(.[\w-]+)@([a-z0-9-]+(.[a-z0-9-]+)?.[a-z]{2,6}|(\d{1,3}.){3}\d{1,3})(:\d{4})?)"

Skype正在将用户输入的电子邮件地址转换为HTML文本,例如(<a href='mailto:someone@example.com'>someemail@mail.com</a>)。我们需要从中找出电子邮件。

有关更多详细信息,请参阅。 Regex for detecting emails in text