【正则】对字符串的一个简单处理重看正则

先看例子

var str ='u28a,u98234a,u76a,x4,u999,766a';
// 如何从字符串中得到 28,98234,76,x4,999,766
解决方法一

将字符串中的u和a全部去掉

str = str.replace(/u/g,'').replace(/a/g,'');
//或者(文兄告诉我的) str = str.replace(/u|a/g,''); 
解决(传统)方法二
while(str.includes('u')){
  str = str.replace('u','');
}
while(str.includes('a')){
  str = str.replace('a','');
}
解决方法三
var arr = str.split('u')
str = arr.join('');
arr = str.split('a');
str = arr.join('');
解决方法四
var reg = /u?(.*?)a?/g;
str = str.replace(reg,(a,b)=>b);
//或者用 str = str.replace(reg,'$1');

其它解决方法...

分析

我只打算分析一下方法一和方法四,因为我个人正则比较那个
在js中正则的实例不一定要通过new Regex()去实例化
一、/u/g 或 /u|a/g
其中 /u/ 只要串串中包含字母u就会匹配成功 最后的字母g表示全局匹配。
其中 | 表示或者 u|a 为 u或a
二、/u?(.*?)a?/g
u?表示有一个或者没有u,问号在这里是表示有一个或没有
a?表示有一个或者没有a,问号在这里是表示有一个或没有
()表示子匹配
.表示匹配除换行符 \n 之外的任何单字符
表示任意个前面的字符
? 在这里是指明一个非贪婪限定符,匹配最少的字符。
三、str.replace(/u?(.
?)a?/g,(a,b)=>b) 或 str.replace(/u?(.?)a?/g,'1') 基中回调中的参数a表示包括u a 在内的子字符串 其中回调中的参数b表示子匹配也就是与正则小括号里的匹配子串 其中1表示第一个匹配子串

其它示例

一、经常看到的模板引擎有{{= 某个变量 }}
比如: {{= str }}

var str = 'Hello world';
var template = ' {{= str }} ';
var reg = /{{=\s(.*)\s}}/g;
var html = template.replace(reg,(a,b)=>eval(b));
//html will

二、找出简历中的手机号并隐藏

var str = '姓名:张三手机: 13838383838邮箱: [email protected]\nasdfasf 13838383838';
var str2 ='姓名张三手机13838383838邮箱 [email protected]';
//要把其中的手机和邮箱改成***
var regMobile = /(0?\d{11})/g;
str = str.replace(regMobile,'***');
//变成138****3838
var regItem = /\d{3}(\d{4})\d{4}/;
str2 = str2.replace(regMobile,(a,b)=>a.substr(0,3)+'****'+a.substr(7));

你可能感兴趣的:(【正则】对字符串的一个简单处理重看正则)