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

总结:

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

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

  • 100
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 33
    评论
要在Flutter应用程序中使用D3.js绘制饼图,你可以使用flutter_webview_plugin插件将D3.js代码嵌入到WebView中。 以下是实现步骤: 1. 添加flutter_webview_plugin插件到你的Flutter项目中。 ```yaml dependencies: flutter_webview_plugin: ^0.3.10 ``` 2. 创建一个WebView并加载D3.js代码。 ```dart import 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; import 'package:flutter/material.dart'; class PieChart extends StatelessWidget { @override Widget build(BuildContext context) { return WebviewScaffold( url: new Uri.dataFromString(''' <html> <head> <script src="https://d3js.org/d3.v4.min.js"></script> </head> <body> <div id="chart"></div> <script> var data = [10, 20, 30, 40, 50]; var width = 400; var height = 400; var radius = Math.min(width, height) / 2; var color = d3.scaleOrdinal() .range(["#98abc5", "#8a89a6", "#7b6888", "#6b486b", "#a05d56"]); var svg = d3.select("#chart") .append("svg") .attr("width", width) .attr("height", height) .append("g") .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")"); var arc = d3.arc() .outerRadius(radius - 10) .innerRadius(0); var pie = d3.pie() .sort(null) .value(function(d) { return d; }); var g = svg.selectAll(".arc") .data(pie(data)) .enter().append("g") .attr("class", "arc"); g.append("path") .attr("d", arc) .style("fill", function(d) { return color(d.data); }); </script> </body> </html> ''', mimeType: 'text/html').toString(), withZoom: false, withLocalStorage: true, ); } } ``` 这里我们使用了D3.js的示例代码来绘制一个简单的饼图。你可以替换它为你自己的代码。 3. 在你的应用程序中使用PieChart小部件。 ```dart void main() => runApp(MaterialApp(home: PieChart())); ``` 这样,你就可以在Flutter应用程序中使用D3.js绘制饼图了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

️ 邪神

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

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

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

打赏作者

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

抵扣说明:

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

余额充值