Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript,regex:如何获取mailto:links中的邮件地址_Javascript_Regex_Mailto - Fatal编程技术网

JavaScript,regex:如何获取mailto:links中的邮件地址

JavaScript,regex:如何获取mailto:links中的邮件地址,javascript,regex,mailto,Javascript,Regex,Mailto,是否有jquery插件或正则表达式,可用于mailto:链接的查询字符串中的所有字段。它应该支持这一进程 说如果我有一个像 <a href="mailto:astark1@unl.edu,id@internet.node">Some msg</a> 对于像这样的链接 <a href="mailto:value">tell a friend</a> 我将传递value和函数,并获得电子邮件地址的关联数组和在查询字符串中传递的其他字段。解析UR

是否有jquery插件或正则表达式,可用于mailto:链接的查询字符串中的所有字段。它应该支持这一进程

说如果我有一个像

<a href="mailto:astark1@unl.edu,id@internet.node">Some msg</a>
对于像这样的链接

<a href="mailto:value">tell a friend</a>


我将传递
value
和函数,并获得电子邮件地址的关联数组和在查询字符串中传递的其他字段。

解析URL,尤其是它们的查询字符串,不是正则表达式的工作。您可以使用或可能只是一个.p>解析URL,尤其是它们的查询字符串,这不是正则表达式的工作。您可以使用或可能只是一个。我不确定这有多准确,但如果您觉得有必要使用正则表达式,它可能会得到改进

function getEmails(str) {
// returns a list of email addresses in 'str'
    var tags = str.match(/<a href=('|")mailto:(.*?)\1(.*?)>/gi);
    var res = [];
    if (!tags.length) return res;
    for (var i = 0; i < tags.length; i++) {
        tags[i] = tags[i].replace(/^<a href=('|")mailto:(.+?)(\?[^\1]*)?\1>$/,'$2');
        var arr = tags[i].replace(/\s/g,'').split(',');
        for (var j = 0; j < arr.length; j++) res.push(arr[j]);
    }
    return res;
}
函数getEmails(str){
//返回“str”中的电子邮件地址列表

var tags=str.match(/我不确定这有多准确,但如果您觉得有必要使用regex,它可能会得到改进

function getEmails(str) {
// returns a list of email addresses in 'str'
    var tags = str.match(/<a href=('|")mailto:(.*?)\1(.*?)>/gi);
    var res = [];
    if (!tags.length) return res;
    for (var i = 0; i < tags.length; i++) {
        tags[i] = tags[i].replace(/^<a href=('|")mailto:(.+?)(\?[^\1]*)?\1>$/,'$2');
        var arr = tags[i].replace(/\s/g,'').split(',');
        for (var j = 0; j < arr.length; j++) res.push(arr[j]);
    }
    return res;
}
函数getEmails(str){
//返回“str”中的电子邮件地址列表

var tags=str.match(/如果您知道自己在做什么:

var href = 'mailto:hello@world.com?subject=My+Subject&body=My+Body';

function getMailto(s) {
    var r = {};
    var email = s.match(/mailto:([^\?]*)/);
            email = email[1] ? email[1] : false;
  var subject = s.match(/subject=([^&]+)/);
            subject = subject ? subject[1].replace(/\+/g,' ') : false;
    var body = s.match(/body=([^&]+)/);
            body = body ? body[1].replace(/\+/g,' ') : false;

  if(email) {r['email'] = email;}
  if(subject) {r['subject'] = subject;}
  if(body) {r['body'] = body;}

  return r;
}

console.log(getMailto(href));

演示:如果您知道自己在做什么:

var href = 'mailto:hello@world.com?subject=My+Subject&body=My+Body';

function getMailto(s) {
    var r = {};
    var email = s.match(/mailto:([^\?]*)/);
            email = email[1] ? email[1] : false;
  var subject = s.match(/subject=([^&]+)/);
            subject = subject ? subject[1].replace(/\+/g,' ') : false;
    var body = s.match(/body=([^&]+)/);
            body = body ? body[1].replace(/\+/g,' ') : false;

  if(email) {r['email'] = email;}
  if(subject) {r['subject'] = subject;}
  if(body) {r['body'] = body;}

  return r;
}

console.log(getMailto(href));

演示:

真的吗?数百行代码用于提取电子邮件地址?是的。任何人如果不这样说,都不理解URL的全部复杂性。真的吗?数百行代码用于提取电子邮件地址?是的。任何人如果不这样说,都不理解URL的全部复杂性。+1用于添加解决方案,而不是虽然console.log中的方法名称不一致,需要进行字符串化,但表示您不应该这样做!。-1这种解析在一般情况下是完全不够的。例如,如果主题包含感叹号,它将被编码为
%21
,您的代码将保持原样。@Anko这只是“使用风险自负!"+1用于添加解决方案,而不是说您不应该这样做!尽管console.log中的方法名称不一致,需要进行字符串化。-1此解析在一般情况下完全不足以进行。例如,如果主题包含感叹号,它将被编码为
%21
,而您的代码将保留该名称照原样。@Anko这只是“你自己冒险使用!”我不知道这是否满足OP的需要,但这正是我想要的。谢谢!(也谢谢你没有发布“不要这样做”的答案:)我不知道这是否满足OP的需要,但这正是我想要的。谢谢!(也谢谢你没有发布“不要这样做”的答案:)