Flutter常用正则

作者: 信仰年輕 | 来源:发表于2022-04-06 12:55 被阅读0次

    TextInputFormatter篇

    1.忽略特殊字符

    import 'package:flutter/services.dart';
    class IgnoreOtherFormatter extends TextInputFormatter{
      var _regExp=r"^[\u4E00-\u9FA5A-Za-z0-9_]+$";
    
      @override
      TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
        if(newValue.text.length>0){
          if(RegExp(_regExp).firstMatch(newValue.text)!=null){
            return newValue;
          }
          return oldValue;
        }
        return newValue;
      }
    }
    

    2.只能输入数字和小写字母

    import 'package:flutter/services.dart';
    class OnlyInputNumberAndLowWorkFormatter extends TextInputFormatter{
      var _regExp=r"^[a-z0-9_]+$";
      @override
      TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
        if(newValue.text.length>0){
          if(RegExp(_regExp).firstMatch(newValue.text)!=null){
            return newValue;
          }
          return oldValue;
        }
        return newValue;
      }
    }
    

    3.只能输入数字和字母

    import 'package:flutter/services.dart';
    class OnlyInputNumberAndWorkFormatter extends TextInputFormatter{
      var _regExp=r"^[A-Za-z0-9_]+$";
      @override
      TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
        if(newValue.text.length>0){
          if(RegExp(_regExp).firstMatch(newValue.text)!=null){
            return newValue;
          }
          return oldValue;
        }
        return newValue;
      }
    }
    

    4.忽略表情

    RegExp regexp=RegExp("[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]");
    inputFormatters.add(BlacklistingTextInputFormatter(regexp));
    

    4.只能输入数字

    WhitelistingTextInputFormatter.digitsOnly
    

    5.长度限制(限制6位)

    LengthLimitingTextInputFormatter(6)
    

    6.限制单行

    BlacklistingTextInputFormatter.singleLineFormatter
    

    7.输入价钱

    FilteringTextInputFormatter.allow(RegExp(r'^\d+(\.)?(\d+)?'))
    

    8.输入最多两位小数的价钱

    FilteringTextInputFormatter.allow(RegExp(r'^\d+(\.)?[0-9]{0,2}'))
    

    正则校验篇

      ///手机号验证
      static bool isChinaPhoneLegal(String str) {
        return RegExp(
                r"^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$")
            .hasMatch(str);
      }
    
      ///邮箱验证
      static bool isEmail(String str) {
        return RegExp(
            r"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$")
            .hasMatch(str);
      }
    ///验证URL
      static bool isUrl(String value) {
        return RegExp(
            r"^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+")
          .hasMatch(value);
    }
    
    ///验证身份证
      static bool isIdCard(String value) {
        return RegExp(
            r"\d{17}[\d|x]|\d{15}")
          .hasMatch(value);
    }
    
    ///验证中文
      static bool isChinese(String value) {
        return RegExp(
           r"[\u4e00-\u9fa5]")
          .hasMatch(value);
    }
    
      // 验证是否为纯字母
      static bool isLetter(String str) {
        final reg = RegExp(r"^[ZA-ZZa-z_]+$");
        return reg.hasMatch(str);
      }
    
      // 验证是否为数字
      static bool isNumber(String str) {
        final reg = RegExp(r"^[0-9_]+$");
        return reg.hasMatch(str);
      }
    
      //验证是否包含特殊字符
      static bool isHaveSpecialCharacters(String input) {
        final reg = new RegExp(r'[`~!@#$%^&*()_+=|;:(){}'',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?-]');
        return reg.hasMatch(input);
      }
    

    相关文章

      网友评论

        本文标题:Flutter常用正则

        本文链接:https://www.haomeiwen.com/subject/nrprsrtx.html