【发布时间】:2013-04-04 03:24:28
【问题描述】:
我有一个正则表达式,可以从给定的字符串中提取 url。它在 C# 中,我想将其转换为 javascript:
private static Regex urlPattern = new Regex(@"(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'"".,<>?«»“”‘’]))", RegexOptions.Compiled | RegexOptions.IgnoreCase);
但是当我尝试这个时,因为没有逐字记录,它给了我错误:
var regexToken = /(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'"".,<>?«»“”‘’]))/i;
如何轻松转换它?我得到以下 SyntaxError: invalid quantifier
【问题讨论】:
-
“没有逐字记录,它给了我错误”您能否具体说明这是什么意思以及您的错误是什么
-
你为什么要用
regex来提取url? -
@The_Land_Of_Devils_SriLanka 您将如何识别给定字符串中的 url 模式。该字符串有多个 url。
-
@JustinHomes 正则表达式用于定期出现的模式。从 html 解析 url 永远不应该使用正则表达式来完成,因为它从未用于此目的。
html不是 严格(xhtml除外)并且肯定会破坏您的代码...您最好使用像 htmlagilitypack 这样的解析器..即使您的字符串不是 html,您仍然可以提取所有网址的 -
htmlagilitypack 是服务器端解决方案,我需要客户端解决方案
标签: c# javascript regex