正则表达式用于获取没有域的电子邮件字段

时间:2018-06-20 15:46:04

标签: regex email elasticsearch

我有一个电子邮件地址,例如example.regex@yahoo.com。是否存在匹配example.regex@yahoo.comexample.regexexampleregex的正则表达式?表达式不应与Yahoo.comYahoocom

匹配

具有以下电子邮件地址: denisa.example@yahoo.com,我希望以下字符串与查询匹配:

denisa.example
denisa
example

我已经使用以下弹性搜索分析器查询进行了尝试:

{
    "settings": {
        "analysis": {
            "filter": {
                "email": {
                    "type": "pattern_capture",
                    "preserve_original": true,
                    "patterns": [
                        "([^@]+)",
                        "(\\p{L}+)",
                        "(\\d+)",
                        "@(.+)"
                    ]
                }
            },
            "analyzer": {
                "email": {
                    "tokenizer": "uax_url_email",
                    "filter": [
                        "email",
                        "lowercase",
                        "unique"
                    ]
                }
            }
        }
    }
}

但是它给了我以下结果:

denisa.example
denisa
example
yahoo.com
yahoo
com

我找到了答案:

"patterns" : [ 
                 "^(.*?)@",
            "(\\w+(?=.*@))"].

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

function extract(email) {
  const name = email.match(/^(.*?)@.*/)[1];
  return [
    name,
    ...name.split(".")
  ]
}

console.log(extract("example.regex@yahoo.com"));

如果您检查浏览器控制台,将打印出以下内容:

(3) ["example.regex", "example", "regex"]