检测并删除文本区域中的 URL

2023-11-23

<textarea name="test">
  http://google.com/
  https://google.com/
  www.google.com/
  [url=http://google.com/]google.com[/url]
  text
</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',-]./)) {

这似乎并不完全适用于检查上面的任何 URL - 我想知道如何优化它。目前看来非常草率和混乱,希望有人能够提供一些见解。

我当前尝试从文本区域中删除 URL:

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

现在,它将输出:

<textarea>
  http://google.com/
  https://google.com/
  www.google.com/
  google.com
  text
</textarea>

我希望我的输出是:

<textarea>
  text
</textarea>

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

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

从头到尾剥离表达式:

  • 除了方案之外,一个地址可能有两个或三个“部分”
  • 地址可能以以下内容开头www or not
  • 它之前可能是http:// or https://
  • 它可能被封闭在里面[url=...]...[/url]

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

1.空间意识

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

2.最后部分不加点

value = value.replace(/^(\[url=)?(https?:\/\/)?(www\.|\S+?\.)(\S+?\.)?[^.\s]+$\s*/mg, '');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测并删除文本区域中的 URL 的相关文章

随机推荐