String 省道/颤振-验证URL的字符串
我正在尝试创建一个系统,在这个系统中,我可以验证一个字符串,以检查它是否是url。() 我找到了颤振软件包,但这与dart 2不兼容,因此与我的代码不兼容 同样命名,我也找到了包,但我似乎无法让它与我的代码正常工作,因为它抛出以下错误;(希望您喜欢我的项目名称;) 如果您可以找到String 省道/颤振-验证URL的字符串,string,dart,flutter,url-validation,String,Dart,Flutter,Url Validation,我正在尝试创建一个系统,在这个系统中,我可以验证一个字符串,以检查它是否是url。() 我找到了颤振软件包,但这与dart 2不兼容,因此与我的代码不兼容 同样命名,我也找到了包,但我似乎无法让它与我的代码正常工作,因为它抛出以下错误;(希望您喜欢我的项目名称;) 如果您可以找到验证器的修复方法,使其不会抛出此错误,从而正确地使用我的代码,或者建议另一种验证字符串是否符合URL的方法,那就太好了 谢谢 编辑-Mypubspec.yaml文件 name: gucci description: A
验证器的修复方法,使其不会抛出此错误,从而正确地使用我的代码,或者建议另一种验证字符串是否符合URL的方法,那就太好了
谢谢
编辑-Mypubspec.yaml
文件
name: gucci
description: A new Flutter project.
dependencies:
flutter:
sdk: flutter
cupertino_icons:
barcode_scan:
gradient_app_bar:
url_launcher:
validate: ^1.7.0
dev_dependencies:
flutter_test:
sdk: flutter
fonts:
- family: PlayfairDisplay
fonts:
- asset: fonts/PlayfairDisplay-BoldItalic.ttf
- family: Kanit
fonts:
- asset: fonts/Kanit-ExtraBoldItalic.ttf
- family: Poppins
fonts:
- asset: fonts/Poppins-BoldItalic.ttf
- family: PoppinsLightItalic
fonts:
- asset: fonts/Poppins-LightItalic.ttf
- family: PoppinsMediumItalic
fonts:
- asset: fonts/Poppins-MediumItalic.ttf
出于某种原因,validators
包需要一个相当新版本的flatter测试库,而不是由应用程序来完成。也许有一个很好的理由(即他们正在使用一项新功能)
颤振引擎内部需要一个特定版本的颤振测试库(这就是为什么指定一个版本的测试库通常不是一个好主意)。因此,要解决此问题,您必须通过运行flatterupgrade
来升级flatter。如果您已经处于所处频道的最新版本,则可能必须运行flatter channel dev
或flatter channel master
以切换到更新频率更高的频道(分支)
我大部分时间运行在dev
分支/频道上,虽然它偶尔会出现问题,但不会经常发生。如果可能的话,我建议不要使用主分支
var urlPattern = r"(https?|http)://([-A-Z0-9.]+)(/[-A-Z0-9+&@#/%=~_|!:,.;]*)?(\?[A-Z0-9+&@#/%=~_|!:,.;]*)?";
var match = new RegExp(urlPattern, caseSensitive: false).firstMatch('https://www.google.com');
match = RegExp(urlPattern, caseSensitive: false).firstMatch('http://www.google.com');
您也可以使用RegExp。要检查有效的URL字符串,只需使用下面的Uri.parse()
bool _validURL = Uri.parse(_adVertData.webLink).isAbsolute;
只需检查RegExp的\u validul
值,如果要在字符串中查找URL,可以使用此值
r'^((?:.|\n)*?)((http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)([-A-Z0-9.]+)(/[-A-Z0-9+&@#/%=~_|!:,.;]*)?(\?[A-Z0-9+&@#/%=~_|!:,.;]*)?)'
当您突出显示字符串中的URL时,可以使用它。例如,在聊天应用程序中,您可以在发送的聊天信息中突出显示URL。
这验证了google.com的有效性
一些示例结果:
网址
结果
'https://stackoverflow.com/questions/52975739/dart-flutter-validating-a-string-for-url“
真的
asd
假的
asd:asd
假的
``
假的
google.nl
假的
https:
假的
https://
假的
https://a
假的
https://a/
真的
关于Uri.html(…)
?你能给我举个例子吗?这就是我发现的。我正在尝试打印(newuri.http(“$text”,”),)
只是返回一个输出,但我不知道如何验证,正如我在原始问题tryUri.parse(text)中所述如果URI无效,它应该抛出异常。使用此方法创建字符串,这是我需要的吗<代码>字符串endResultConvert=Uri.parse(testResult)代码>现在试试这个,我会尽快给你回复。效果很好,谢谢!现在正确使用验证器
Hi@Ares,我已经尝试了你的正则表达式,但它不是validateshttps://google.com
和http://google.com
和google.com
我实际上是在用它进行验证,它工作得很好。请详细说明如何使用正则表达式@RRIFAFAUZIKOMARATHE还为字符串“http:”返回true。还有Uri.tryParse,在Uri字符串无效的情况下不会引发异常。
r'^((?:.|\n)*?)((http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)([-A-Z0-9.]+)(/[-A-Z0-9+&@#/%=~_|!:,.;]*)?(\?[A-Z0-9+&@#/%=~_|!:,.;]*)?)'
Uri.tryParse(mystring)?.hasAbsolutePath ?? false;