0

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

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

当一个 URL 被复制然后粘贴到文本区域时,正则表达式就可以完成它的工作。

如果我要手动输入一个 url 它不会删除.. 我走到最后w,然后www被删除,让我可以继续打字。显然,下一个字符将是 a .which 将保留在那里,并最终得到如下内容:

http://.example.com

什么时候应该是这样的:

http://example.com

关于如何解决这个问题的任何想法?

4

3 回答 3

2

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

尝试使用www\.+orwww\.代替:

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

或者:

input.value = input.value.replace(/www\./,"");
于 2013-10-23T10:53:12.573 回答
1

此替换功能将起作用:

input.value = input.value.replace(/(^|\/)www\./i, "$1");
于 2013-10-23T10:51:07.320 回答
0

这是因为您被 onkeyup 事件所吸引。将其更改为使用 onblur 代替。那应该可以解决您的问题。

于 2013-10-23T10:54:00.190 回答