🍈作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名在校大学生
🍇个人主页:亦世凡华、的博客
🍓系列专栏:JavaScript专栏
🥝推荐一款模拟面试刷题神器🔥:点击跳转进入网站
目录
正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,将字符串中符合规则的内容提取出来。
语法:var 变量 = new RegExp("正则表达式","匹配模式");
使用 test() 这个方法可以用来检查一个字符串是否符合正则表达式的规则,如果符合则返回true,否则返回false。
- // 这个正则表达式可以检查我们字符串是否含有 a
- var reg = new RegExp("a");
- var str = "a";
- var result = reg.test(str)
- console.log(result);
- console.log(reg.test("a"));
- console.log(reg.test("ddagsgts"));
- console.log(reg.test("dAAAgsgts"));
- console.log(reg.test("dgsgts"));
在构造函数中可以传递一个匹配模式作为第二个参数。 例如:i 忽略大小写 g 全局匹配模式
- // 这个正则表达式可以检查我们字符串是否含有 abc
- var reg = new RegExp("abc","i");
- var str = "abc";
- var result = reg.test(str)
- console.log(result);
- console.log(reg.test("abc"));
- console.log(reg.test("AbC"));
- console.log(reg.test("AC"));
语法:var 变量 = /正则表达式/匹配模式
- // 这个正则表达式可以检查我们字符串是否含有 abc
- // var reg = new RegExp("abc","i");
- // 和上面构造函数创建的正则表达式达到相同效果,两者区别:字面量创建简便,构造创建灵活
- reg = /abc/i;
- console.log(reg.test("abc"));
- console.log(reg.test("AbC"));
- console.log(reg.test("AC"));
- // 创建正则表达式检查两者或两者以上取其一即可,比如检查是否有 a或b。
- // 使用 | 表示”或者“的意思,[]的内容也是或的意思,[ab] == a | b;
- reg = /a | b/i;
- reg = /[ab]/i;
- console.log(reg.test("abc"));
- console.log(reg.test("AbC"));
- console.log(reg.test("C"));
根据上面的内容我想得到任意的字母并且返回 true ,应该如何做?请看:
- // [a-z] 任意小写字母
- // [A-Z] 任意大写字母
- // [A-z] 任意字母
- reg = /[A-z]/;
- console.log(reg.test('BUDfvd')); //true
根据上文内容我想检查字符串是否含有 abc 或 afc 或 agc,如何通过简便的方法匹配呢?如下:
- // 根据观察,所要正则匹配的都是以a开头,以c结尾都规律,匹配如下:
- reg = /a[bfg]c/;
- console.log(reg.test("afc"));//true
- console.log(reg.test("agc"));//true
- console.log(reg.test("adc"));//false
- // 剔除只有的内容 [^内容]
- reg = /[^ab]/;
- console.log(reg.test("ab"));//false
- console.log(reg.test("agc"));//true
- console.log(reg.test("abc"));//true
现在想剔除只有数字的内容
- // 剔除只有数字的内容 [^内容]
- reg = /[^0-9]/;
- console.log(reg.test("14151"));//false
- console.log(reg.test("agc"));//true
- console.log(reg.test("31313abc4141"));//true
方法 | 描述 |
---|---|
search | 检索与正则表达式相匹配的值 |
match | 找到一个或多个正则表达式的匹配 |
replace | 替换与正则表达式匹配的子串 |
split | 把字符串分割为字符串数组 |
可以搜索字符串中是否含有指定内容,如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到则返回-1,它可以接收一个正则表达式作为参数,然后会根据正则表达式去检索字符串。
- var str = 'hello abc world aec hello afc people';
- // 搜索字符串中是否含有 abc aec afc
- var result = str.search(/a[bef]c/);
- var result1 = str.search(/a[k]c/)
- console.log(result);
- console.log(result1);
可以根据正则表达式,从一个字符串中将符合的内容提取出来。默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索,我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有内容。
- str = '1a2b3c4d5e6f7A8B9C';
- // 可以为一个正则表达式设置多个匹配模式,且顺序无所谓
- result = str.match(/[a-z]/ig);
- console.log(result);
- // match()会将匹配到的内容封装到一个数组中返回,即使只查到一个结果。
- console.log(Array.isArray(result));
- console.log(result[1]);
可以将字符串中指定内容替换为新的内容;参数:1、被替换的内容,可以接受一个正则表达式作为参数;2、新的内容;默认只会替换一个。
- str = '1a2b3c4d5e6f7A8B9C';
- // 默认替换第一个
- result = str.replace(/a/,'$_$');
- console.log(result);
- // 替换全局字母
- result2 = str.replace(/[a-z]/gi,'$_$');
- console.log(result2);
- // 替换字母为空,只保留数字
- result3 = str.replace(/[a-z]/gi,'');
- console.log(result3);
可以将一个字符串拆分为一个数组,方法中可以传递一个正则表达式作为参数去拆分字符串
- var str = '1a2b3c4d5e6f7g8';
- var result = str.split(/[A-z]/);
- console.log(result);
通过量词可以设置一个内容出现的次数,量词只对它前边的内容起作用 - {n} 正好出现 n 次
- reg = /a{3}/;
- console.log(reg.test("aaabc"));
- console.log("---------------");
- reg = /ab{3}/;
- console.log(reg.test("ababab"));
- console.log(reg.test("abbbc"));
- console.log("---------------");
- reg = /(ab){3}/;
- console.log(reg.test("ababab"));
通过量词我们也可以设置出现的次数,{n,m} n到m次都是可以的,当然设置{1,}代表1次以上。
- reg = /ab{1,3}c/;
- console.log(reg.test("abc"));
- console.log(reg.test("abbc"));
- console.log(reg.test("abbbc"));
量词 | 描述 |
---|---|
n+ | 匹配任何包含至少 一个 n 的字符 |
n* | 匹配任何包含 零个 或 多个 n 的字符 |
n? | 匹配任何包含 零个 或 一个 n 字符的 |
n{X} | 匹配包含 X 个 n 的序列的字符串 |
n{X,Y} | 匹配包含 X 或 Y 个 n 的序列的字符串 |
n{X,} | 匹配包含至少 X 个 n 的序列字符串 |
n$ | 匹配任何结尾为 n 的字符串 |
^n | 匹配任何开头为 n 的字符串 |
?=n | 匹配任何其后紧接指定字符串 n 的字符串 |
?!n | 匹配任何其后没有紧接指定字符串 n 的字符串 |
量词举例:
- // 至少一个,相当于{1,}
- reg = /ab+c/;
- console.log(reg.test("ac"));
- console.log(reg.test("abc"));
- console.log(reg.test("abbc"));
- console.log("---------------");
- // 0个或多个,相当于{0,}
- reg = /ab*c/;
- console.log(reg.test("ac"));
- console.log(reg.test("abc"));
- console.log(reg.test("abbc"));
- console.log("---------------");
- // 0个或一个,相当于{0,1}
- reg = /ab?c/;
- console.log(reg.test("ac"));
- console.log(reg.test("abc"));
- console.log(reg.test("abbc"));
- console.log("---------------");
- // ^表示开头,$表示结尾
- // 如果正则表达式中同时使用^和$,则要求字符串必须完全符合正则表达式。只能是一个a
- // 如果想以a开头并且以a结尾:/^a/&&/a$/;
- reg = /^a/;
- console.log(reg.test("ac"));
- console.log(reg.test("gsgabc"));
- console.log("-----------");
- reg = /a$/;
- console.log(reg.test("bfgqga"));
- console.log(reg.test("bfgeaaqg"));
- console.log("----------------");
- reg = /^a$/;
- console.log(reg.test("a"));
- console.log(reg.test("aa"));
- reg = /^a/&&/a$/;
- console.log(reg.test("aa"));
创建一个正则表达式,用来检查一个字符串是否是一个正常合法的手机号。
国内手机号规则:
1、第一位数字以1开头 ^1
2、第二位数字3-9任意数字 [3-9]
3、三位以后任意数字9个 [0-9]{9}$
- var phoneReg = /^1[3-9][0-9]{9}$/;
- var phoneStr = '13252278267';
- var phoneStr1 = '11252278267';
- console.log(phoneReg.test(phoneStr));//true
- console.log(phoneReg.test(phoneStr1));//false
创建一个正则表达式,用来检查一个字符串是否是一个正常合法的邮件。
邮件规则:(QQ为例)
1、第一位任意字母数字下划线 \w{3,}
1.1、第一位可能中间会出现点 \w{3,}(\.\w+)*
2、第二位 @ @
3、第三位任意字母数字 [A-z0-9]+
4、第四位 .任意字母(2-5位)(会多个) (\.[A-z]{2,5}){1,2}
- // ^和$添加表示一个完整的邮件,是不能省略的
- var emailReg = /^\w{3,}@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;
- var email = '31444144141@qq.com';
- console.log(emailReg.test(email));
在正则表达式中使用 \ 作为转译字符。
- // 检查一个字符中是否含有 . , . 表示任意字符,我们要通过转译告诉计算机我们检查的就是一个 . ;
- // \.表示 . ; \\表示 \
- var reg = /\./;
- var reg1 = /\\/;
- console.log(reg.test("bbb.ff"));
- console.log(reg1.test("bbb\\ff"));//斜杠在字符串中也是转译字符,一个斜杠会把后面的引号转译掉,所有我们需要两个斜杠
- // \w 任意字母、数字、_ [A-z0-9]
- // \W 除了字母、数字、_ [^A-z0-9]
- reg = /\w/;
- console.log(reg.test('12faf'));
- reg = /\W/;
- console.log(reg.test("$$$"));
- console.log("---------------");
- // \d 任意数字 [0-9]
- // \D 除了数字 [^0-9]
- reg = /\d/;
- console.log(reg.test('12079'));
- reg = /\D/;
- console.log(reg.test("$$jbvkj$"));
- console.log("---------------");
- // \s 空格
- // \S 除了空格
- reg = /\s/;
- console.log(reg.test('1 2079'));
- reg = /\S/;
- console.log(reg.test(" "));
- console.log("---------------");
- // \b 单词边界
- // \B 除了单词边界
- reg = /\bhello\b/; //检查字符串中是否有该单词
- console.log(reg.test('hello world'));
- console.log(reg.test('helloworld'));
- console.log("---------------");
去除空格相关实例:
- // 去除空格用""来代替空格
- var str = " ad min ";
- console.log(str);
- // 去除开头空格
- // str = str.replace(/^\s*/,"");
- // console.log(str);
- // 去除结尾空格
- // str = str.replace(/\s*$/,"")
- // console.log(str);
- // 去除开头和结尾空格
- str = str.replace(/^\s* | \s*$/g,"")
- console.log(str);
🍃JavaScript的学习还是要以多练习为主,想要练习JavaScript的朋友,推荐可以去牛客网看一看,链接:牛客网 里面的IT题库内容很丰富,属于国内做的很好的了,最重要的是里面的资源是免费的,是课程+刷题+面经+求职+讨论区分享,一站式求职学习网站,感兴趣的可以去看看。
呜呜~,原创不易。