js中的正则表达式中分组

什么是正则表达式???
正则表达式在很多语言中都有,但是本篇介绍JavaScript中的正则表达式。
w3c:
正则表达式是构成搜索模式的字符序列。
该搜索模式可用于文本搜索和文本替换操作。
菜鸟教程:
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
搜索模式可用于文本搜索和文本替换。
通俗的来说,正则表达式,就是你定义的规则,按照你的规则匹配相应的文本的操作。

正则表达式的语法:
/正则表达式主体/修饰符(可选)

其中分组就是讲多个字符放在一起

var str= 'abababab';
var str1=/(ab){4}/

就可以将ab分为一个组,一共出现了四次。
在举个小栗子之前,要先弄清楚
\w:一位字母数字或者下划线
\d:一位数字
\s:一位空字符
•:一位任意字符
** :可有可无多了不限
+:至少一次,多了不限
?:可有可无,最多一次
(重点)

小栗子

var str = 'hellllo world';
str = str.replace(/(l)\1/g,'$1');
console.log(str);

首先分析replace的用法
replace(正则表达式,替换内容)
其中正则表达式:/(l)\1/g
(l)表示分组,将l分成一组
\1:反斜杠+1代表什么意思呢
简单来说也就是获取第一个分组匹配的内容
那么我们可以得到:/(l)\1/g=/ll/g;
其中修饰符g表示全局匹配
(为什么是两个ll呢,分组的时候匹配一个l,\1又获取了一遍l,所以是两个啦)
$1:获得第一个分组匹配对应的内容
也就是说 l
那么我们可以得到结果为:hello world;

tips:

var str = 'abs123123'
str = str.replace(/(abs)(123)\2/g,'$2')

(\n必须与小括号配合使用)
结果为:123

栗子
有字符串“aaabbbcccdddeefggaa”,转换成连续不重复的字符串eg:abcdefga

var str= 'aaabbbcccdddeefggaa';
str = str.replace(/(\w)\1*/g,'$1')
console.log(str)
发布了28 篇原创文章 · 获赞 2 · 访问量 2918

猜你喜欢

转载自blog.csdn.net/weixin_45725020/article/details/103211272