dart正则替换手机号中间四位为*

Flutter项目中隐藏手机号中间4位
例:13888888888 => 138**8888

阅读 11.6k
3 个回答

研究了一下dart的api,试出了一种写法

String phoneNumber = '13888888888';
String phoneNumberStr = phoneNumber.replaceFirst(new RegExp(r'\d{4}'), '****', 3);

replaceFirst用法:

String replaceFirst(Pattern from, String to, [int startIndex = 0])
dart:core

Returns a new string in which the first occurrence of [from] in this string is replaced with [to], starting from [startIndex]:

'0.0001'.replaceFirst(new RegExp(r'0'), ''); // '.0001'
'0.0001'.replaceFirst(new RegExp(r'0'), '7', 1); // '0.7001'

不知道Flutter中正则替换的语法,希望下面js的例子能帮到你。
首先,我们要替换的是中间四位,那么,我们可以匹配从前面是三位数本身是四位数的规则来写正则。
前面是三位数(?<=\d{3})
本身是四位数(\d{4})
正则表达式

/(?<=\d{3})(\d{4})/

js代码示例:

    let str = '13888888888';
    let reg = /(?<=\d{3})(\d{4})/;
    str.replace(reg,"****"); //138****8888
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题