Flutter Dart 正则RegExp [.....]和[^.....](一)

本文深入探讨了正则表达式的具体应用,通过多个实例演示如何使用Dart语言中的正则表达式来匹配特定的字符串模式,包括匹配指定字符集内的任意字符及排除特定字符集的匹配。

 卧龙、凤雏二者得一可安天下。——水镜先生

DartPad 线上工具

正则表达式 - 语法

[...] 匹配中括号内所有字符

1、匹配所有字符ABC字符串中是否包含ABC所有字符中任意一个字符

至少包含一个字符为true,否则为false

void main() {
  isABC('A1234656B123456C');
}

void isABC(String input) {
  RegExp mobile = new RegExp(r'[ABC]');
  bool isAbc = mobile.hasMatch(input);
  print("是否包含ABC中任意字符:${isAbc}");
}
Console
是否ABC:true

2、匹配字符串#@¥%&*()-+字符串中是否包含#@¥%&*()-+所有字符串中任意一个字符

void main() {
  isMatch('123阿范德萨范德萨');
}

void isMatch(String input) {
  RegExp regExpStr = new RegExp(r'[#@¥%&*()-+]');
  bool isContainer = regExpStr.hasMatch(input);
  print("'${input}' 是否包含字符串:'#@¥%&*()-+' 中任意一个字符 ${isContainer}");
}

 运行结果: 

'123阿范德萨范德萨' 是否包含字符串:'#@¥%&*()-+' 中任意一个字符 false
void main() {
  isMatch('1#2@3*');
  isMatch('1#2@3*dfasfds');
  isMatch('1#2@3*dfasfds+dfsf-');
  isMatch('1#2@3*dfasfds+dfsf-4456465¥');
}

void isMatch(String input) {
  RegExp regExpStr = new RegExp(r'[#@¥%&*()-+]');
  bool isContainer = regExpStr.hasMatch(input);
  print("'${input}' 是否包含字符串:'#@¥%&*()-+' 中任意一个字符 ${isContainer}\n");
}

 运行结果: 

'1#2@3*' 是否包含字符串:'#@¥%&*()-+' 中任意一个字符 true

'1#2@3*dfasfds' 是否包含字符串:'#@¥%&*()-+' 中任意一个字符 true

'1#2@3*dfasfds+dfsf-' 是否包含字符串:'#@¥%&*()-+' 中任意一个字符 true

'1#2@3*dfasfds+dfsf-4456465¥' 是否包含字符串:'#@¥%&*()-+' 中任意一个字符 true

3、匹配字符串#@¥%&*()-+字符串中是否包含#@¥%&*()-+所有字符串中任意一个字符

void main() {
  isMatch('我很菜#确实很菜@菜得很*');
  isMatch('中级#初级@资深*专家');
  isMatch('六脉神剑#如来涅槃@浴火重生*游龙引凤+卧薪尝胆-飞龙在天¥');
}

void isMatch(String input) {
  RegExp regExpStr = new RegExp(r'[#@¥%&*()-+]');
  bool isContainer = regExpStr.hasMatch(input);
  print("'${input}' 是否包含字符串:'#@¥%&*()-+' 中任意一个字符 ${isContainer}\n");
}

运行结果:

'我很菜#确实很菜@菜得很*' 是否包含字符串:'#@¥%&*()-+' 中任意一个字符 true

'中级#初级@资深*专家' 是否包含字符串:'#@¥%&*()-+' 中任意一个字符 true

'六脉神剑#如来涅槃@浴火重生*游龙引凤+卧薪尝胆-飞龙在天¥' 是否包含字符串:'#@¥%&*()-+' 中任意一个字符 true

[^...] 匹配除开中括号内所有字符 

1、匹配除开字符串 #@¥%&*()-+ 以外的其他字符串(字符串中是否包含除开#@¥%&*()-+所有字符串以外的其他字符) 

至少包含除开字符串 #@¥%&*()-+ 任意字符的之外字符串

void main() {
  isMatch('@#%()+-');
  isMatch('中级#初级@资深*专家');
  isMatch('六脉神剑#如来涅槃@浴火重生*游龙引凤+卧薪尝胆-飞龙在天¥');
  isMatch('卧薪尝胆\飞龙在天');
}

void isMatch(String input) {
  RegExp regExpStr = new RegExp(r'[^-#@¥%&*()+]');
  bool isContainer = regExpStr.hasMatch(input);
  print("'${input}' 是否包含除开字符串:'#@¥%&*()-+' 中任意一个字符 ${isContainer}\n");
}
'@#%()+-' 是否包含除开字符串:'#@¥%&*()-+' 中任意一个字符 false

'中级#初级@资深*专家' 是否包含除开字符串:'#@¥%&*()-+' 中任意一个字符 true

'六脉神剑#如来涅槃@浴火重生*游龙引凤+卧薪尝胆-飞龙在天¥' 是否包含除开字符串:'#@¥%&*()-+' 中任意一个字符 true

'卧薪尝胆飞龙在天' 是否包含除开字符串:'#@¥%&*()-+' 中任意一个字符 true

2、匹配除开字符串  "好好学习,好好爱自己" 以外的其他字符串(字符串中是否包含除开  "好好学习,好好爱自己" 所有字符串以外的其他字符) 

至少包含除开字符串  "好好学习,好好爱自己"  任意字符的之外字符串。

也可以包含 "好好学习,好好爱自己" 任意字符

void main() {
  isMatch('@#%()+-');
  isMatch('中级#初级@资深*专家');
  isMatch('六脉神剑#如来涅槃@浴火重生*游龙引凤+卧薪尝胆-飞龙在天¥');
  isMatch('卧薪尝胆\飞龙在天');
}

void isMatch(String input) {
  RegExp regExpStr = new RegExp(r'[^好好学习,好好爱自己]');
  bool isContainer = regExpStr.hasMatch(input);
  print("'${input}' 是否包含字符串:'好好学习,好好爱自己' 中任意一个字符 ${isContainer}\n");
}
'@#%()+-' 是否包含字符串:'好好学习,好好爱自己' 中任意一个字符 true

'中级#初级@资深*专家' 是否包含字符串:'好好学习,好好爱自己' 中任意一个字符 true

'六脉神剑#如来涅槃@浴火重生*游龙引凤+卧薪尝胆-飞龙在天¥' 是否包含字符串:'好好学习,好好爱自己' 中任意一个字符 true

'卧薪尝胆飞龙在天' 是否包含字符串:'好好学习,好好爱自己' 中任意一个字符 true

总结:

 [...] 匹配中括号内所有字符:相当于和括号内容求交集

 [^......]匹配除开括号内所有之外的字符并且可以包含括号内字符:相当于存在除开括号内字符的其他集合并且可以交集括号内容。

评论 33
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

️ 邪神

你自己看着办,你喜欢打赏我就赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值