正则表达式 - 提取mailto:邮件地址

时间:2012-07-27 16:48:14

标签: regex

示例:mailto:info@info.com?subjectthingthing          或mailto:info@info.com

我想只收到没有主题的电子邮件地址(如果有的话)

这个表达不适用,我无法使其发挥作用:

mailto:(.*)

由于

3 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

mailto:([^\?]*)

答案 1 :(得分:1)

您需要在捕获组中保存匹配的字符:

mailto:([^?]+)

现在你的地址是1美元(或其他变量;取决于语言)。

如果可能在电子邮件地址之后发生其他情况,则必须指定分隔符。例如,如果是空格:

mailto:([^?\S]+)[\s?]

你也可以使用非贪婪的r.e。:

mailto:(.+?)[\s?]

这意味着"只要您遇到\s(空格)或?

就停止

答案 2 :(得分:0)

这将在单词边界内查找匹配的字符串。您需要使用您选择的语言从第一个带括号的子模式中获取电子邮件的值(通常对它的引用为$ 1)。第二个子模式将捕获主题(在开头有?)。

\bmailto:(.*)(\?.*)?\b