Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.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/8/python-3.x/16.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正则表达式匹配完整单词时,排除电子邮件或URL中匹配的单词_Javascript_Regex - Fatal编程技术网

使用JavaScript正则表达式匹配完整单词时,排除电子邮件或URL中匹配的单词

使用JavaScript正则表达式匹配完整单词时,排除电子邮件或URL中匹配的单词,javascript,regex,Javascript,Regex,我试图找出JavaScript正则表达式,使其仅与完整单词匹配,但如果该单词是电子邮件或URL的一部分,则将其排除在外 例如,我们有文本 下面是我的代码 var str =' this is my myname my email is myname@email.com another email is support@myname.com and my site is www.myname.com.au'; function match(tex

我试图找出JavaScript正则表达式,使其仅与完整单词匹配,但如果该单词是电子邮件或URL的一部分,则将其排除在外

例如,我们有文本 下面是我的代码

var str ='
    this is my myname
    my email is myname@email.com
    another email is support@myname.com
    and my site is www.myname.com.au';


        function match(text, str) {
            var pattern = "(?=\\s|^|\\b)(?:" + text + ")(?=\\s|$|\\b)";
            var regexp = new RegExp(pattern, "ig");
            while ((match = regexp.exec(str)) != null) {
                var offsetStart = parseInt(match.index);
                var offsetEnd   = parseInt(regexp.lastIndex);
                var selectText  = match.toString();
                console.log("offset start " + offsetStart + " offset end " + offsetEnd + " matched text " + selectText);
            }
        }

    match('myname', str);
我想要的是匹配第1行中的文本“myname”,排除文本“myname”myname@email.com', 'support@myname.com和“www.myname.com.au”


谢谢,

这不是一个健壮的解决方案,但可以假定它是一个很好的起点

var-str=`
这是我的名字
我的电子邮件是myname@email.com
另一封电子邮件是support@myname.com
我的网站是www.myname.com.au`;
const matches=str.match(/myname(?!\w*[@])/g);

console.log(matches)
使用与要排除的内容相匹配的负前瞻。函数不返回任何内容。它应该返回什么?调用函数match('myname')。