[英]JavaScript, regex: How to fetch mail address in mailto: links
是否有一個jquery插件或一個正則表達式,可用於mailto:鏈接的查詢字符串中的所有字段。 它應該支持mailto語法 。
假設我有類似...的鏈接
<a href="mailto:astark1@unl.edu,id@internet.node">Some msg</a>
正則表達式應該給我mailto中的郵件地址:link- astark1@unl.edu
, id@internet.node
。 它還應支持類似的鏈接
<a href="mailto:astark1@unl.edu?subject=Comments from MailTo Syntax Page">
<a href="mailto:astark1@unl.edu?body=I am having trouble finding information on">
<a href="mailto:astark1@unl.edu?subject=MailTo Comments&cc=ASTARK1@UNL.EDU&bcc=id@internet.node">
對於像這樣的鏈接
<a href="mailto:value">tell a friend</a>
我將傳遞value
和函數,並獲得在查詢字符串中傳遞的電子郵件地址和其他字段的關聯數組。
解析URL,尤其是其查詢字符串,不是正則表達式的工作。 您可以使用適當的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;
}
我不確定最后一部分的意思,所以我嘗試回答第一部分。
如果您知道自己在做什么:
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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.