与this question类似,但在这种情况下不确定如何实施。
受信任的用户(不需要关心验证输入)是在文本字段中键入/粘贴电子邮件地址。在模糊事件中,我想查看文本并清理他输入的内容(通常是在复制并粘贴电子邮件客户端的地址列表之后)。
"Bob Smith" <bob@company.com>, joe@company.com, "John Doe"<john@company.com>
将被修剪为:
bob@company.com, joe@company.com, john@company.com
答案 0 :(得分:4)
此正则表达式应删除双引号中的任何内容以及<
和>
个字符。
/".*?"|[<>]/
在Javascript中,您可能会有以下几点:
line.replace(/".*?"|[<>]/g, '');
答案 1 :(得分:4)
有效的电子邮件地址可能非常很奇怪,所以我建议不要在该字段中禁止任何内容,否则很可能您的程序无用,因为您的用户将无法发送电子邮件有效的电子邮件地址。
阅读整个故事see this blog post或自己去寻找RFC。
答案 2 :(得分:3)
var emailList = userInput
.replace(/[^,;]*.?</g, "")
.replace(/>/g, "")
.replace(/[,; ]{1,}/g, "\n")
.replace(/[\n]{2,}/g, "\n")
.split("\n")
这允许以下列格式提供电子邮件列表(包括 复制并粘贴您的电子邮件列表Google To box):
"Bob Rob"<bob@company.com>, job@company.com; rob@company.com job@somewhere.com
电子邮件ID可以用,
,;
或换行符分隔。
答案 3 :(得分:1)
您可以使用.math()
方法快速将电子邮件解析为数组:
inputval.match(/[A-z0-9]+@[A-z0-9]+.[A-z]{2,3}/g)
如果您想将其转换为字符串,可以向其添加.join(', ')
或.join('; ')
。正则表达式被简化了。有很多正则表达式来解析电子邮件,但上面的一个是简化版本。它没有考虑子域名,如下面的评论中所指出的,或多部分TLD(它也没有考虑电子邮件地址第一部分中的+
符号)。用符合您需求的正则表达式替换。
答案 4 :(得分:-2)
myEmailList=userInput.match(/[a-zA-z0-9_.]+@[a-zA-Z0-9_.]+\.(com|org|whatever)/g);
myEmailListString=myEmailList.join(', ');
如果你想要一组电子邮件地址,或者只做第一行。