2014-07-22 104 views
0

我在JavaScript中的正则表达式以下的正则表达式URL通过正则表达式正则表达式的好友通过但未能通过达特

(https?|ftp)://([-A-Z0-9.]+)(/[-A-Z0-9+&@#/%=~_|!:,.;]*)?(\?[A-Z0-9+&@#/%=~_|!:‌​,.;]*)? 

它试图验证和空的空间/秒或URL。

然而,当我试图在DART RegExp一个使用珀尔味正则表达式

使用它,它不进行验证。

任何帮助表示赞赏。

+1

它不验证。分享一些投入。 – Braj

+3

我会说它不匹配一个URL,但一个电子邮件地址。这是一个非常糟糕的正则表达式,因为它不支持任何新通用顶级域名(并且没有'i'修饰符,它不会匹配现有的ccTLD。我也不理解正则匹配的目的空格或其中包含电子邮件地址的任何文本(由于使用了封闭的'\ b's。 – jcaron

+0

您链接的Dart网站说*“Dart正则表达式与JavaScript常规具有相同的语法和语义表达式“*,所以你不需要做任何改变,正则表达式模式只是JavaScript中的一个字符串,所以你可能需要看看你如何定义它 – Borodin

回答

0

您的模式不寻找小写字母。您可以将a-z添加到相应的字符组中,或者使用caseSenstivie: false,如代码所示。

var urlPattern = r"(https?|ftp)://([-A-Z0-9.]+)(/[-A-Z0-9+&@#/%=~_|!:,.;]*)?(\?[A-Z0-9+&@#/%=~_|!:‌​,.;]*)?"; 
var result = new RegExp(urlPattern, caseSensitive: false).firstMatch('https://www.google.com'); 

如果结果是!= null,则找到匹配。

你的格局没有找到http:网址(仅httpsftp)既不www.google.com。 您对“空白空间”的声明可能适用于您最初在您的问题中使用的电子邮件正则表达式,但不适用于您在评论中添加的URL正则表达式。