<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(使用前将#替换为@)