我甚至不确定如何提出问题,甚至不知道如何搜索问题。 我浏览了周围,我得到的是一些真正的硬核正则表达式
基本上,我有这个textarea,我可以输入我的电子邮件列表,如谷歌如何做到这一点。过滤器应该只能忽略双引号内的任何内容,只能在<中找到电子邮件。 >
示例:"test" <test@test.com>,"test2" <test2@test.com>,"test3" <test@test3.com>
我可以通过拿起逗号分开电子邮件,但不熟悉&lt; &GT;
是谁可以帮助我?谢谢!答案 0 :(得分:1)
这是一个快速版本:
var textAreaVal = '"test" <test@test.com>,"test2" <test2@test.com>,"test3" <test@test3.com>';
// Better hope you don't have any "Smith, Bob"-type bits if you do it this way...
var textAreaLines = textAreaVal.split(",");
// Gonna assume you have jQuery here 'cause raw JS loops annoy me ;-)
// (if not you can hopefully still get the idea)
var emails = [];
$$.each(textAreaLines, function(index, value) {
var email = /<(.*?)>/.exec(value)[1];
if (email) emails.push(email);
});
// emails = ["test@test.com", "test2@test.com", "test@test3.com"]
关键是这一行:
var email = /<(.*?)>/.exec(value)[1];
基本上说:
var email =
// set email to
/<(.*?)>/
// define a regex that matches the minimal amount possible ("?")
// of any character (".") between a "<" and a ">"
.exec(value)
// run that regex against value (ie. a line of input)
[1];
// and use only the first matched group ([1])
你可能想要做一个稍微复杂的正则表达式来解释任何疯狂的输入,确保有一个“@”,或者对于那些只做“,bob @ smith.com”的人(没有括号) ,但希望你明白了。