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

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

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

总结:

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

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

猜你喜欢

转载自blog.csdn.net/u013491829/article/details/108433716