Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 省道/颤振-验证URL的字符串_String_Dart_Flutter_Url Validation - Fatal编程技术网

String 省道/颤振-验证URL的字符串

String 省道/颤振-验证URL的字符串,string,dart,flutter,url-validation,String,Dart,Flutter,Url Validation,我正在尝试创建一个系统,在这个系统中,我可以验证一个字符串,以检查它是否是url。() 我找到了颤振软件包,但这与dart 2不兼容,因此与我的代码不兼容 同样命名,我也找到了包,但我似乎无法让它与我的代码正常工作,因为它抛出以下错误;(希望您喜欢我的项目名称;) 如果您可以找到验证器的修复方法,使其不会抛出此错误,从而正确地使用我的代码,或者建议另一种验证字符串是否符合URL的方法,那就太好了 谢谢 编辑-Mypubspec.yaml文件 name: gucci description: A

我正在尝试创建一个系统,在这个系统中,我可以验证一个字符串,以检查它是否是url。()

我找到了颤振软件包,但这与dart 2不兼容,因此与我的代码不兼容

同样命名,我也找到了包,但我似乎无法让它与我的代码正常工作,因为它抛出以下错误;(希望您喜欢我的项目名称;)

如果您可以找到
验证器的修复方法,使其不会抛出此错误,从而正确地使用我的代码,或者建议另一种验证字符串是否符合URL的方法,那就太好了

谢谢

编辑-My
pubspec.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”,”),)
只是返回一个输出,但我不知道如何验证,正如我在原始问题try
Uri.parse(text)中所述字符串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;