检测并删除textarea中的URL

O P*_*O P 9 regex jquery

<textarea name="test">
  http://google.com/
  https://google.com/
  www.google.com/
  [url=http://google.com/]google.com[/url]
  text
</textarea>
Run Code Online (Sandbox Code Playgroud)

我目前尝试检查textarea中是否有URL.

if ($('textarea[name="test"]').val().indexOf('[url') >= 0 ||
    $('textarea[name="test"]').val().match(/^http([s]?):\/\/.*/) ||
    $('textarea[name="test"]').val().match(/^www.[0-9a-zA-Z',-]./)) {
Run Code Online (Sandbox Code Playgroud)

这似乎不能完全用于检查上面的任何URL - 我想知道如何优化它.这一刻似乎非常草率和黑客攻击,希望有人可以提供一些见解.

我目前尝试从textarea中删除URL:

var value = $('textarea[name="test"]').val();
    value = value.replace(/\[\/?url([^\]]+)?\]/g, '');
$('textarea[name="test"]').val(value);
Run Code Online (Sandbox Code Playgroud)

现在,它将输出:

<textarea>
  http://google.com/
  https://google.com/
  www.google.com/
  google.com
  text
</textarea>
Run Code Online (Sandbox Code Playgroud)

我希望我的输出是:

<textarea>
  text
</textarea>
Run Code Online (Sandbox Code Playgroud)

ilo*_*mbo 6

尝试(评论后更正和改进):

value = value.replace(/^(\[url=)?(https?:\/\/)?(www\.|\S+?\.)(\S+?\.)?\S+$\s*/mg, '');
Run Code Online (Sandbox Code Playgroud)

从头到尾剥离表达式:

  • 除了方案之外,地址可能有两个或三个"部分"
  • 地址可能以www开头,也可能不是
  • 它由http://https://开头
  • 它可能被包含在[url = ...] ... [/ url]中

此表达式不强制执行完整正确的语法,这是一个更难写的正则表达式.
您可能需要的一些改进:

1.意识到空间

value = value.replace(/^\s*(\[\s*url\s*=\s*)?(https?:\/\/)?(www\.|\S+?\.)(\S+?\.)?\S+\s*$\s*/mg, '');
Run Code Online (Sandbox Code Playgroud)

2.最后一部分没有点

value = value.replace(/^(\[url=)?(https?:\/\/)?(www\.|\S+?\.)(\S+?\.)?[^.\s]+$\s*/mg, '');
Run Code Online (Sandbox Code Playgroud)