te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>regex - How to find out emails and names out of a string in javascript - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

regex - How to find out emails and names out of a string in javascript - Stack Overflow

programmeradmin3浏览0评论

I am using a cool widget to import email addresses out of gmail/homail/yahoo etc. The widget is still beta and I guess thats why it does not allow a lot of configuration. It actually just fills a textarea with the following data:

"Name one" <[email protected]>, "Name Two" <[email protected]>, "And so on" <[email protected]>

So I wondered if someone could help me write a regex or something like that to get all values out ofa string into an array. The desired format would be:

[{name: 'Name one', email: 'foo@domain'},{name: 'Name Two', email: 'foo@domain'},{name: 'And so on', email: '[email protected]'}]

I am a total regex noob and I have no clue on how to do that in javascript. Thanks for your help!

I am using a cool widget to import email addresses out of gmail/homail/yahoo etc. The widget is still beta and I guess thats why it does not allow a lot of configuration. It actually just fills a textarea with the following data:

"Name one" <[email protected]>, "Name Two" <[email protected]>, "And so on" <[email protected]>

So I wondered if someone could help me write a regex or something like that to get all values out ofa string into an array. The desired format would be:

[{name: 'Name one', email: 'foo@domain'},{name: 'Name Two', email: 'foo@domain'},{name: 'And so on', email: '[email protected]'}]

I am a total regex noob and I have no clue on how to do that in javascript. Thanks for your help!

Share Improve this question asked Mar 2, 2010 at 16:30 MarcMarc 3777 silver badges19 bronze badges 3
  • Be warned that parsing email addresses is, in general, extremely plicated. If you try to cheat, you'll find some legitimate user with an email address that breaks your regex in about 15 minutes after you go live :-) – Pointy Commented Mar 2, 2010 at 16:34
  • I am sorry. I missformulated the question a little bit: It is not important to check wheter an email address is correct or not. The widget will only return valid emails. What I don't understand is to get the pairs of data (name + email). I would like to find out what is inside "" => name and what is inside <> = email. string.match does only find one at a time. right? – Marc Commented Mar 2, 2010 at 16:53
  • Even if you're not checking the validity of the email addresses it's going to be tricky. There can be mas inside the quoted "name" parts of each address, for one thing. If it were me, I'd be spending my energy trying to figure out how to get my "cool widget" to give me the email addresses in a programming-friendly way in the first place. – Pointy Commented Mar 2, 2010 at 16:55
Add a ment  | 

3 Answers 3

Reset to default 11
function getEmailsFromString(input) {
  var ret = [];
  var email = /\"([^\"]+)\"\s+\<([^\>]+)\>/g

  var match;
  while (match = email.exec(input))
    ret.push({'name':match[1], 'email':match[2]})

  return ret;
}

var str = '"Name one" <[email protected]>, ..., "And so on" <[email protected]>'
var emails = getEmailsFromString(str)

function findEmailAddresses(StrObj) {
        var separateEmailsBy = ", ";
        var email = "<none>"; // if no match, use this
        var emailsArray = StrObj.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
        if (emailsArray) {
            email = "";
            for (var i = 0; i < emailsArray.length; i++) {
                if (i != 0) email += separateEmailsBy;
                email += emailsArray[i];
            }
        }
        return email;
    }

Source here

In order to acheive that you'll have to read some documentation. Regex are not very plicated, but they get some gettin used to.

Here's a nice place to start Javascript Regular Expression

And try practicing writting regex using rubular

发布评论

评论列表(0)

  1. 暂无评论