JavaScript正则表达式小结

正则表达式概念

正则表达式是一个模式,可以用来校验、提取、替换数据(主要处理字符串)。

正则表达式的创建

1.字面量方式创建(常用):

var reg = / 规则 /;

2.构造函数方式创建

var reg = new RegExp();

//注意:new可以省略
var reg = RegExp();

正则表达式的方法

1.test(验证)
   语法:
            正则表达式.test(String) // String表示要检测的字符串
   作用:
            验证该字符串是否满足规则
   返回值:
              满足规则,返回true
              不满足规则,返回false

//案例
var reg = /\d/;  //  \d 表示任意一个数字(0-9)
var str = '5';
var res = reg.test(str); // 验证这个字符串是否满足这个规则,即str里面的数据是否是0-9之间的数字
console.log(res); // true

2.search(验证/查找)
   语法:
            string.search(正则表达式) // String表示要检测的字符串
   作用:
            在字符串中查找满足正则表达式的那部分
   返回值:
              满足规则,返回对应下标
              不满足规则,返回-1

//案例
var reg = /\d/;  //  \d 表示任意一个数字(0-9)
var str = 'abc2defg';
var res = str.search(reg); // 验证这个字符串是否满足这个规则,即str里面的数据是否是0-9之间的数字
console.log(res); //3

3.exec(提取)
   语法:
            正则表达式.exec(String) // String表示要检测的字符串
   作用:
            把字符串中满足规则的部分提取出来,组成一个新的数组并返回
   返回值:
              满足规则,返回数组(把满足规则的部分存进该数组)
              不满足规则,返回null

//案例
var reg = /\d/;  // \d 表示任意一个数字(0-9)
var str = 'abcd2efg';
var res = reg.exec(str);
console.log(res);  // [ 2 ]
console.log(res[0]);  // 也可以通过下标将该元素输出

4.match(提取)
   语法:
            String.match(正则表达式) // String表示要检测的字符串
   作用:
            把字符串中满足规则的部分提取出来,组成一个新的数组并返回
   返回值:
              满足规则,返回数组(把满足规则的部分存进该数组)
              不满足规则,返回null

// 案例
var reg = /\d/;  // \d 表示任意一个数字(0-9)
var str = 'abc2defg';
var res = str.match(reg);
console.log(res); // [ 2 ]

5.replace(替换)
   语法:
            String.replace(正则表达式,新内容) // String表示要检测的字符串
   作用:
            把满足规则的内容替换掉
   返回值:
              满足规则,返回数组(把满足规则的部分存进该数组)
              不满足规则,返回null

// 案例
var reg = /\d/;  // \d 表示任意一个数字(0-9)
var str = '1是一';
var ment = '*'; //定义要替换的新内容
var res = str.replace(reg,ment);
console.log(res);  //*是一

元字符

元字符概念
正则表达式元字符是包含特殊含义的字符。它们有一些特殊功能,可以控制匹配模式的方式。

常用元字符

\d 代表任意一个数字 - [0-9]
\D 代表任意一个非数字
\w 代表任意一个数字、字母、下划线
\W 代表任意一个非数字、字母、下划线
.(点) 代表任意一个字符
\s 代表任意一个空格
\S 代表任意一个非空格
^ 规定以什么开头
$ 规定以什么结尾
// 案例:QQ号正则表达式
// 要求:5~12位的数字,不能用0开头
var reg = /^[1-9]\d{4,11}$/;
var str = "10086";
var res = reg.test(str);
console.log(res);

限定符

* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
//案例:{n}
//var reg = /\d/;  //该规则只能提取一位数字
//但是我们要提取2位数字
var reg = /\d{2}/;  //括号里面的数字为几就提取多少位数字
var str = "abc12gg";
var res = str.match(reg);
console.log(reg);//第一次输出1,第二次输出12
//其他限定符同理

修饰符

/规则/g 贪婪匹配(匹配多次)
/规则/i 忽略大小写
// 案例:贪婪匹配
var reg = /\d+/g;
var str = 'asdf123asd456f789';
var res = str.match(reg);
console.log(res); //["123","456","789"]
// 未贪婪匹配输出[ "123" ]
// 案例:忽略大小写
	var reg = /html/gi;
    var str = 'i love html very much and HTML is very good';
    var res = str.match(reg);
    console.log(res); // [ "html","HTML" ]
    // 未忽略大小写输出[ "html" ]

扩展

[] 字符串用中括号括起来,表示匹配其中的任一字符,相当于或的意思
[^] 取反
| 或者,选择两者中的一个。注意|将左右两边分为两部分,而不管左右两边有多长多乱
[\u4e00-\u9fa5]  匹配汉字
案例:匹配数字
var str = '520我注意你很久了';
var reg = /[\u4e00-\u9fa5]+/;
var res = str.match(reg);
console.log(res);  //[ "我注意你很久了" ]
// 案例:取反
var reg = /[^0]/;
// 中括号中的上档键表示取反的意思,非0
var str = '1abcdef';
var res = str.match(reg);
console.log(res);

小测验

相信大家现在对于正则表达式已经有了一定的了解,下面有几道题目可以检测一下大家对于正则表达式的理解情况

// 第一题:邮政编码检测
// 第二题:字符串首尾去空格
// 第三题:手机号码检测
第四题:邮件格式检测

参考答案

// 邮政编码检测
var reg = /\d{6}/;
var str = '123456';
var res = reg.test(str);
console.log(res);
// 字符串首尾去空格
    var reg = / (^\s*)\w+(\s*$) /g;
    var str = ' ahgd122 '
    var res = str.replace(reg,'');
    console.log(res)
// 手机号检测
    var reg = /^1[34578]\d{9}$/
    var phone = '15879712879';
    var res = reg.test(str);
    console.log(res);
// 邮件格式检测
    var reg = /^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/;
    var str = '[email protected]';
    var res = reg.test(str);
    console.log(res);
发布了1 篇原创文章 · 获赞 3 · 访问量 57

猜你喜欢

转载自blog.csdn.net/weixin_46558926/article/details/104857160