Flutter正则表达式美化插件prettier_reg_exp的使用

发布于 1周前 作者 yuanlaile 来自 Flutter

Flutter正则表达式美化插件prettier_reg_exp的使用

简介

PrettierRegExp 是一个强大的 Dart 包,它简化了正则表达式的创建和管理。它使您可以轻松地使用自定义模式和约束来验证和解析输入数据,确保您的应用程序中的数据完整性和准确性。

主要功能

功能 描述
简洁的模式创建 使用各种字符类型定义复杂的正则表达式模式,简化过程。
预定义模式 生成用于电子邮件地址、URL、电话号码等的常见正则表达式,节省时间和精力。
前视断言和后视断言 利用这些高级技术根据其存在或不存在来匹配或排除特定模式。
精确长度约束 定义您的模式的最小和最大长度要求,确保数据符合所需的格式。
灵活的重复约束 指定模式的精确或范围内的重复次数,以适应不同的输入结构。
轻松添加前缀和后缀 轻松地向您的模式添加前缀或后缀,增强其灵活性。
细粒度的单词约束 在您的模式中包含或排除特定的单词,实现有针对性的验证。

入门

1. 添加依赖项:

在您的 pubspec.yaml 文件中,添加以下行:

dependencies:
  prettier_reg_exp: ^1.0.0

2. 安装包:

在终端中运行以下命令以安装包:

flutter pub get

使用示例

基本长度约束

强制执行模式的最小和最大长度要求:

import 'package:prettier_reg_exp/prettier_reg_exp.dart';

void main() {
  final regex = PrettierRegExp(minLength: 3, maxLength: 5).generate();
  print(regex.hasMatch('abc'));  // true (匹配3个字符)
  print(regex.hasMatch('abcdef')); // false (超过5个字符)
}

电子邮件验证

生成专门用于验证电子邮件地址的正则表达式:

import 'package:prettier_reg_exp/prettier_reg_exp.dart';

void main() {
  final regex = PrettierRegExp(isEmail: true).generate();
  print(regex.hasMatch('example@example.com')); // true (有效电子邮件格式)
  print(regex.hasMatch('invalid-email'));        // false (无效格式)
}

具有约束条件的自定义模式

定义带有定制约束条件的正则表达式:

import 'package:prettier_reg_exp/prettier_reg_exp.dart';

void main() {
  final regex = PrettierRegExp(
    customPattern: r'^[a-zA-Z0-9]{8,12}$', // 8到12个字母数字字符
    mustContain: ['abc'],             // 必须包含 "abc"
    mustNotContain: ['xyz'],           // 必须不包含 "xyz"
  ).generate();

  print(regex.hasMatch('abcdefgh')); // true (满足约束条件)
  print(regex.hasMatch('abcdxyz'));  // false (违反 "mustNotContain" 条件)
}

附加资源

  • 贡献: 希望进一步增强此包?请参阅贡献指南(链接将提供)以了解如何贡献您的宝贵代码。
  • 问题反馈: 如果遇到错误或有功能请求?请在 GitHub 上打开一个问题报告(链接将提供)。

完整示例代码

以下是完整的 Flutter 应用程序示例代码,演示了如何使用 prettier_reg_exp 插件生成并验证不同类型的正则表达式。

import 'package:flutter/material.dart';
import 'package:prettier_reg_exp/prettier_reg_exp.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'PrettierRegExp Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'PrettierRegExp Examples'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _exampleOutput = '';

  void _generateExamples() {
    setState(() {
      try {
        // 示例 1: 电子邮件验证
        final emailPattern = PrettierRegExp(isEmail: true).generate();
        final emailMatch = emailPattern.hasMatch('example@example.com');
        _exampleOutput += '电子邮件模式: ${emailPattern.pattern}\n';
        _exampleOutput += '电子邮件匹配: $emailMatch\n';

        // 示例 2: URL 验证
        final urlPattern = PrettierRegExp(isUrl: true).generate();
        final urlMatch = urlPattern.hasMatch('https://example.com');
        _exampleOutput += 'URL 模式: ${urlPattern.pattern}\n';
        _exampleOutput += 'URL 匹配: $urlMatch\n';

        // 示例 3: 电话号码验证
        final phonePattern = PrettierRegExp(isPhoneNumber: true).generate();
        final phoneMatch = phonePattern.hasMatch('+1234567890');
        _exampleOutput += '电话号码模式: ${phonePattern.pattern}\n';
        _exampleOutput += '电话号码匹配: $phoneMatch\n';

        // 示例 4: 具有长度约束的自定义模式
        final customPattern = PrettierRegExp(
          supportLetters: true,
          minLength: 5,
          maxLength: 10,
          prefix: 'user_',
          suffix: '_dev',
        ).generate();
        final customMatch = customPattern.hasMatch('user_example_dev');
        _exampleOutput += '自定义模式: ${customPattern.pattern}\n';
        _exampleOutput += '自定义匹配: $customMatch\n';

        // 示例 5: 信用卡验证
        final creditCardPattern = PrettierRegExp(
          isCreditCard: true,
          supportedCreditCards: ['visa', 'mastercard'],
        ).generate();
        final creditCardMatch = creditCardPattern.hasMatch('4111111111111111');
        _exampleOutput += '信用卡模式: ${creditCardPattern.pattern}\n';
        _exampleOutput += '信用卡匹配: $creditCardMatch\n';
      } catch (e) {
        _exampleOutput = '生成模式时发生错误: $e';
      }
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: _generateExamples,
              child: const Text('生成正则表达式示例'),
            ),
            Padding(
              padding: const EdgeInsets.all(16.0),
              child: Text(
                _exampleOutput,
              ),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter正则表达式美化插件prettier_reg_exp的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter正则表达式美化插件prettier_reg_exp的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用prettier_reg_exp插件来美化正则表达式的代码案例。prettier_reg_exp是一个Flutter插件,用于将复杂的正则表达式格式化为更易读的格式。

步骤 1: 添加依赖

首先,在你的pubspec.yaml文件中添加prettier_reg_exp依赖:

dependencies:
  flutter:
    sdk: flutter
  prettier_reg_exp: ^latest_version  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

步骤 2: 导入插件

在你的Dart文件中导入prettier_reg_exp

import 'package:prettier_reg_exp/prettier_reg_exp.dart';

步骤 3: 使用插件美化正则表达式

下面是一个简单的例子,展示如何使用prettier_reg_exp来美化一个复杂的正则表达式:

void main() {
  // 示例复杂正则表达式(未美化)
  String rawRegExp = r'(?i)\b((?:https?://|www\d{0,3}[.]|ftp[.]|mailto:|news:|irc:)\S+(-\S*)?)';

  // 使用prettier_reg_exp美化正则表达式
  String prettyRegExp = PrettierRegExp(rawRegExp).format();

  // 打印美化后的正则表达式
  print('原始正则表达式:');
  print(rawRegExp);
  print('\n美化后的正则表达式:');
  print(prettyRegExp);
}

运行结果

运行上述代码后,你将看到美化前后的正则表达式输出。美化后的正则表达式将更加易读,例如:

原始正则表达式:
(?i)\b((?:https?://|www\d{0,3}[.]|ftp[.]|mailto:|news:|irc:)\S+(-\S*)?)

美化后的正则表达式:
(?i)
\b(
  (?:
    https?:// |
    www\d{0,3}[.] |
    ftp[.] |
    mailto:|
    news:|
    irc:
  )
  \S+(-\S*)?
)

总结

通过prettier_reg_exp插件,你可以轻松地将复杂的正则表达式格式化为更易读的格式,从而提高代码的可读性和可维护性。上面的代码案例展示了如何添加依赖、导入插件以及使用插件来美化正则表达式。希望这对你有所帮助!

回到顶部