ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaScript正则表达式笔记

2022-06-11 09:00:44  阅读:145  来源: 互联网

标签:console log 正则表达式 JavaScript 笔记 str var 匹配 match


正则表达式

正则表达式介绍

作用:判断字符串是否符合规则

正则中分为两个部分,一个是正则匹配内容,另一个是修饰符部分

支持正则的字符串方法search(),match(),split(),replace()

创建方式

  • 字面量创建

  • 构建函数创建
var reg=/a/g;// /这里面就是正则匹配内容a/修饰符部分g
var reg=new RegExp("a","g");

正则内容

修饰符

i 不区分大小写

g 全局 从头查找到尾部

m 匹配多行

var str="abacA";
console.log(str.replace(/a/,"z"));//zbacA   第一个a替换成z
console.log(str.replace(/a/g,"z"));//zbzcA  全局替换,所有a替换成z
console.log(str.replace(/a/gi,"z"));//zbzcz  全局不区分大小写,所有a和A替换成z

正则方法

reg.exec()

查找字符串中满足正则匹配内容的结果,并且返回一个数组, 这个数组只有一个元素,包括几个属性,分别是群组,索引,字符串自身,未查找到返回false

var str="abc";
console.log(/a/.exec(str));
//['a', index: 0, input: 'abc', groups: undefined]

reg.test()

判断字符串是否满足正则匹配内容,满足返回true,否则返回false

var str="abad";
console.log(/a/.test(str));//true
console.log(/c/.test(str));//false

字符串方法

str.search();

按照正则表达式查找字符串中的内容,返回优先查找到第一个元素下标

var str="abcadbs";
console.log(str.search(/a/g)); // 0

str.split();

按照正则表达式匹配内容切割字符串

var str="abcdebca";
var arr=str.split(/e/);
var arr1=str.split(/c/);
console.log(arr,arr1);// ['abcd','bca'],['ab','deb','a']

str.replace();

按照正则表达式匹配内容进行替换,可以替换成相同的也可以替换成不同的

var str="abcaced";
str.replace(/a/g,"z");
console.log(str);// zbczced
var str="abcaced";
str=str.replace(/a/g,function(item,index){
    return index===0 ? "z" : "f";
});
console.log(str);//zbcfced  第一个a替换成z第二个替换成f

**str.match();**

按照正则表达式匹配内容返回数组

如果不加全局,可以达到exec的目的

如果加有全局匹配,就会只返回找到的所有元素数组

如果加有群组,但是不加全局,则除返回找到的元素外,还返回群组的元素

var str="abcbasc";
var arr=str.match(/a/g);
var arr1=str.match(/(ab)/);
console.log(arr);//['a','a'];
console.log(arr1);
// ['ab', 'ab', index: 0, input: 'abcaced', groups: undefined]

正则中特殊符号

元字符 . 可以匹配任意一个字符

转义符 \ 将有特殊含义的符号转义成普通字符

console.log("cetcotcat".match(/c.t/g));//['cet','cot','cat']
console.log("cetc.tcat".match(/c\.t/g));// ['c.t']\.转义为字符串.

[]里面内容可以任意匹配一个字符

/[ab]/.test("abc");//[ab]表示匹配a或者b其中任意一个
/[0-9]/ //匹配数字0到数字9
/[a-z]/ //匹配小写字母a到z
/[01][0-9]/  //表示匹配0-19

反义字符^

在[]中第一位使用^,表示除了^后面的字符外都满足,在外面使用表示开始

console.log("abcafcadcaec".match(/a[^f]c/g));
//中间不要f ['abc','adc','aec']
console.log("abcafcadcaec".match(/a[f^a]c/g))
//^如果在[]不是第一位,就表示字符^ ['afc']

转义特殊字符

[a-zA-Z0-9_] \w 表示数字字母与下划线

[^a-zA-Z0-9_] \W 表示非数字字母与下划线

[0-9] \d 表示数字

[^0-9] \D 表示非数字

\s 表示空白字符

\S 表示非空白字符

空白字符就用空格隔开的 空字符就是"" ,"ab"两个字符之间夹得就是空字符

重复 {}

{} 里面写数字表示重复几次可以为0表示匹配空字符

console.log(/(abc){2}/.test("abcabc"));//true ()表示群组视为一个,表示abc重复2次
console.log(/abc{2}/.test("abcabc"));//false   这里表示c重复2次
console.log(/(abc){2,3}/.test("abcabc"));//true   表示重复2-3次

? {0,1} 重复0-1次 + {1,} 重复1次以上 *{0,} 重复0次以上

或者 |

或者,可以用来匹配多个字符或者另外得字符,优先匹配|前面的内容

console.log("catdogcetdag".match(/cat|dog/g));
//['cat', 'dog']
console.log("abcdef".match(/a||b/g));
//如果|得一端没有内容,则认为匹配空字符

起始 ^

/^[0-9]/   //起始为0-9数字

结束 $

/[0-9]$/   //结束为0-9数字

群组()

// $1就是第一个群组,$2就是第二个群组,$3就是第三个群组
var str="18617891076".replace(/(\d{3})(\d{4})(\d{4})/,"$1****$3");
console.log(str);//186****1076

贪婪匹配

贪婪匹配:先匹配最大的,再匹配小的

console.log("caaaaatcbbbbt".match(/c.{4,5}t/g));
//['caaaaat', 'cbbbbt']
console.log("aaaaaaaaaa".match(/a{2,4}/g));
//['aaaa','aaaa','aa']   优先匹配4个的 再匹配2个的

非贪婪匹配

/.*?/

console.log("aaaaaaaa".match(/a{2,5}?/g));
//['aa', 'aa', 'aa', 'aa']    先匹配小的,重复2次的
console.log("aaaaaaaa".match(/a{2}/g));
//['aa', 'aa', 'aa', 'aa']
console.log("caaaaatcbbbbt".match(/c.*?t/g));
//['caaaaat', 'cbbbbt']

 

标签:console,log,正则表达式,JavaScript,笔记,str,var,匹配,match
来源: https://www.cnblogs.com/chen52125/p/16365236.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有