正则表达式不满足

时间:2013-10-23 10:49:37

标签: javascript regex

我目前正在使用正则表达式从输入文本区域的任何网址中删除www.。我通过以下方式做到了这一点:

var input = document.getElementById("tweet_text");
input.onkeyup = function() {
    input.value = input.value.replace(/www\.*/,"");
}

当复制URL然后粘贴到textarea中时,正则表达式会完成它的工作。

如果我要手动输入网址,则不会移除.。我到达最后一个w,然后www被删除,允许我继续输入。显然,下一个角色将是.,它将保留在那里,并最终得到这样的结果:

http://.example.com

什么时候看起来像这样:

http://example.com

有关如何解决此问题的任何想法?

3 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为.*也匹配空格(0或更多重复)。因此,www\.*将成功匹配www,并替换它。然后当你继续键入.时,它将与模式不匹配,因此不会被替换。

请尝试使用www\.+www\.

input.value = input.value.replace(/www\.+/,"");

或:

input.value = input.value.replace(/www\./,"");

答案 1 :(得分:1)

此替换功能将起作用:

input.value = input.value.replace(/(^|\/)www\./i, "$1");

答案 2 :(得分:0)

这是因为你迷上了onkeyup事件。将其更改为使用onblur。这应该可以解决你的问题。