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

时间:2017-06-02 02:18:50

标签: javascript regex

我试图找出JavaScript正则表达式仅匹配完整单词,但如果它是电子邮件或网址的一部分,则排除该单词。

例如,我们有文字 以下是我的代码

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);

我想要的是我希望匹配文字' myname'在第1行中,排除文字' myname@email.com',' support@myname.com'和' www.myname.com.au'。

谢谢,

1 个答案:

答案 0 :(得分:0)

这不是一个强有力的解决方案,但它可以被认为是一个很好的起点。



function format(name){
		var nameStr="house,car,table";
		if(nameStr.indexOf(name)==-1)return -1;
		nameStr+=",";
		nameStr=nameStr.replace(name+",","");
		return nameStr.substring(0,nameStr.length-1);
	}
	
	console.log(format("house"));
	console.log(format("table"));