我正在尝试从 Watson 对话中的用户输入文本中提取电子邮件地址。首先,我需要使用 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,}))$')
但它不起作用,我尝试了很多在互联网上找到的正则表达式,但没有一个有效。有谁知道如何编写正确的正则表达式?
我建议使用更简单、近似的正则表达式来匹配您需要使用的电子邮件String.matches(string regexp)
接受正则表达式的方法:
input.text.matches('^\S+@\S+\.\S+$')
不要忘记使用双转义反斜杠,以便在模式中定义文字反斜杠。
图案详情:
^
- 字符串的开头\S+
- 一个或多个非空格字符@
-@
符号\S+
- 一个或多个非空格字符\.
- 文字点\S+
- 一个或多个非空格字符$
- 字符串的结尾。