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 正则表达式不';不能很好地捕捉群体_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式不';不能很好地捕捉群体

Javascript 正则表达式不';不能很好地捕捉群体,javascript,regex,Javascript,Regex,我现在有一个正则表达式 /^Newsletter pour (.+)?<?((([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,}))>?$/i /^Newsletter pour(+)?您的正则表达式太长,可以简单地完成。请尝试/^Newsletter pour

我现在有一个正则表达式

/^Newsletter pour (.+)?<?((([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,}))>?$/i

/^Newsletter pour(+)?您的正则表达式太长,可以简单地完成。请尝试
/^Newsletter pour(?:\s*(\w+(:\w+))?
(.+)?
(.+)
不同。您可以将
(.+)?
替换为
(.*)
,请参阅。您的解决方案很好,但无法验证电子邮件是否有效。它允许ome@yahoo. 或ome@yahoo.c哪一个不是有效的emailvalidate&extract数据应该分两步进行。它们有两个步骤。因此,您首先使用常规的email正则表达式进行验证,然后使用此正则表达式提取数据。根据我的建议,您的代码将运行得更快更清晰,复杂正则表达式比简单正则表达式匹配数据的时间更长,因为正则表达式匹配需要将正则表达式预编译到树中。请您帮助我了解当前版本。我刚刚更新了我的问题。第一种格式是时事通讯pour ome如果我想匹配时事通讯pour ome sanni呢
describe('matching address', () => {
    const regex = /^Newsletter pour (?:\s*(\w+(?: \w+)*) )?<?((\S+)@(([^.]+)\.[^>]+))>?\s*$/i;


    test('address without header', () => {
        let result = "Newsletter pour ome@yahoo.com".match(regex);

        expect(result[1]).toBeUndefined();
        expect(result[2]).toEqual('ome@yahoo.com');
        expect(result[3]).toEqual('ome');
        expect(result[4]).toEqual('yahoo.com');
        expect(result[5]).toEqual('yahoo');
    });

    test('email without sharps', () => {
        let result = "Newsletter pour ome ome@yahoo.com".match(regex);
        expect(result[1]).toEqual('ome');
        expect(result[2]).toEqual('ome@yahoo.com');
    });

    test('email enclosed with sharps', () => {
        let result = "Newsletter pour ome <ome@yahoo.com>".match(regex);

        expect(result[1]).toEqual('ome');
        expect(result[2]).toEqual('ome@yahoo.com');
    });

    test('header includes whitespaces', () => {
        let result = "Newsletter pour ome sanni john ome@yahoo.com".match(regex);

        expect(result[1]).toEqual('ome sanni john');
        expect(result[2]).toEqual('ome@yahoo.com');
    });

    test('header includes whitespaces & email eclosed with sharps', () => {
        let result = "Newsletter pour ome sanni john <ome@yahoo.com>".match(regex);

        expect(result[1]).toEqual('ome sanni john');
        expect(result[2]).toEqual('ome@yahoo.com');
    });
});