我目前正在使用正则表达式从输入文本区域的任何网址中删除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
有关如何解决此问题的任何想法?
答案 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。这应该可以解决你的问题。