【问题标题】:Bot Framework Skype channel regular expressions not workingBot Framework Skype 频道正则表达式不起作用
【发布时间】:2018-01-10 14:01:23
【问题描述】:

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

/^[-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 频道上不会发生。

【问题讨论】:

  • 检查电子邮件是如何到达机器人的

标签: node.js regex botframework skype


【解决方案1】:

根据 GitHub 用户nwhitmont(堆栈溢出@nilsw)关于问题[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>

【讨论】:

    【解决方案2】:

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

    @"\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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多