使用JavaScript正则表达式匹配完整单词时,排除电子邮件或URL中匹配的单词
我试图找出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
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')。