1

我正在尝试从 Watson Conversation 中的用户输入文本中提取电子邮件地址。首先,我需要使用这样的 if 条件触发特定节点:

input.text.contains('\^(([^<>()[].,;:s@\"]+(.[^<>()[].,;:s@\"]+)*)|(\".+\"))@(([[‌​0-9]{1,3}.[0-9]{1,3}‌​.[0-9]{1,3}.[0-9]{1,‌​3}])|(([a-zA-Z-0-9]+‌​.)+[a-zA-Z]{2,}))$\')

但它不起作用,我尝试了很多我在互联网上找到的正则表达式,但它们都不起作用。有谁知道如何编写正确的正则表达式?

4

1 回答 1

2

我建议使用更简单的近似正则表达式来匹配您需要使用String.matches(string regexp)接受正则表达式的方法的电子邮件:

input.text.matches('^\\S+@\\S+\\.\\S+$')

不要忘记双转义反斜杠,以便在模式中定义文字反斜杠。

图案细节

  • ^- 字符串的开始
  • \\S+ - 一个或多个非空白字符
  • @- 一个@符号
  • \\S+ - 一个或多个非空白字符
  • \\. - 一个字面点
  • \\S+ - 一个或多个非空白字符
  • $- 字符串结束。
于 2017-04-11T08:22:21.333 回答