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

xmiaoshen發表於2020-09-06

 臥龍、鳳雛二者得一可安天下。——水鏡先生

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

 

總結:

 [...] 匹配中括號內所有字元:相當於和括號內容求交集

 [^......]匹配除開括號內所有之外的字元並且可以包含括號內字元:相當於存在除開括號內字元的其他集合並且可以交集括號內容。

相關文章