Flutter 如何使用 form_field_validator 仅验证 'https' 并拒绝 'http'?

Flutter How can I validate only 'https' and reject 'http' using form_field_validator?

提问人:John 提问时间:10/27/2023 更新时间:10/30/2023 访问量:39

问:

我正在尝试对仅接受“https”并拒绝“http”的 URL 进行验证。我正在使用form_field_validator,我可能知道如何使用它。但是,我不知道如何编写正则表达式。谁能帮我解决这个问题?这是下面的代码。

url_validator.dart

import 'package:form_field_validator/form_field_validator.dart';

class UrlValidator extends TextFieldValidator {
  UrlValidator({required String errorText}) : super(errorText);

  // I would like to validate only 'https' but this code doesn't work
  var urlPattern =
      r'https';

  @override
  bool isValid(String? value) => RegExp(urlPattern).hasMatch(value!);
}

验证者.dart

import 'package:form_field_validator/form_field_validator.dart';

final urlValidator = MultiValidator([
  UrlValidator(errorText: 'URL is invalid'),
]);
正则表达式 Flutter 验证

评论


答:

-1赞 Munsif Ali 10/27/2023 #1

试试这个正则表达式,希望这能起作用。

final RegExp httpsPattern = RegExp(r'^https://');
0赞 Samed Demir 10/27/2023 #2

你可以使用正则表达式来验证 Flutter 中的 URL,使用 form_field_validator 包。要仅接受“https”URL 并拒绝“http”URL,可以使用以下正则表达式模式和 RegExp 验证程序:

RegExp regex = RegExp(r'^https://[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$');

0赞 Hemant Metalia 10/30/2023 #3

我看到您想使用正则表达式来验证 URL,并仅接受以“https”开头的 URL,同时拒绝“http”。您走在正确的轨道上,但是您在 url_validator.dart 中提供的正则表达式模式没有正确定义您想要的规则。您可以通过使用如下所示的正则表达式来实现此目的:

import 'package:form_field_validator/form_field_validator.dart';

class UrlValidator extends TextFieldValidator {
   UrlValidator({required String errorText}) : super(errorText);

   // Use a regular expression to validate 'https' URLs
   var urlPattern = r'^https:\/\/';

   @override
   bool isValid(String? value) => RegExp(urlPattern).hasMatch(value!);
}