我使用 VB.NET 并且想添加http://
指向所有尚未以 http://、https://、ftp:// 等开头的链接。
"I want to add http here <a href=""www.google.com"" target=""_blank"">Google</a>,
but not here <a href=""http://www.google.com"" target=""_blank"">Google</a>."
当我刚刚拥有链接时,这很容易,但我无法为包含多个链接的整个字符串找到一个好的解决方案。我想 RegEx 是可行的方法,但我什至不知道从哪里开始。
我可以自己找到正则表达式,这是我遇到问题的解析和前置。谁能给我一个 C# 或 VB.NET 中的 Regex.Replace() 示例吗?
任何帮助表示赞赏!
引用 RFC 1738:
“方案名称由一系列字符组成。小写字母“a”--“z”、数字以及字符加号(“+”)、句点(“.”)和连字符(“-”)是为了弹性,解释 URL 的程序应将方案名称中的大写字母视为等同于小写字母(例如,允许“HTTP”以及“http”)。
出色的!要匹配的正则表达式:
/^[a-zA-Z0-9+.-]+:\/\//
如果它与您的 href 字符串匹配,请继续。如果没有,请在前面添加“http://”。除非您询问具体细节,否则其余的健全性检查由您负责。请注意其他评论者对相关链接的想法。
编辑:我开始怀疑你问了错误的问题......你可能没有任何东西可以将文本分割成你需要处理它的单个标记。看寻找 C# HTML 解析器
编辑:作为盲目尝试忽略所有内容并仅攻击文本,使用不区分大小写的匹配,
/(<a +href *= *")(.*?)(" *>)/
如果第二个反向引用匹配/^[a-zA-Z0-9+.-]+:\/\//
, 没做什么。如果不匹配,则替换为
$1 + "http://" + $2 + $3
这不是 C# 语法,但应该无需太多努力即可进行转换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)