正则表达式

正则表达式

一、简介
正则表达式(regular expression)是一个描述字符规则的对象。ECMAScript 的 RegExp 构造函数 表示正则表达式,而 String 和 正则表达式都定义了进行强大的【模式匹配】和【文本检索】与【替换】的函数。
二、创建正则表达式
1.构造函数创建
参1代表规则(字符串和变量)参2代表修饰符
修饰符i:忽略大小写;m:多行匹配 g:全局匹配

 	var reg = new RegExp('hello', 'i'); //创建一个正则对象
    // test(str):字符串中匹配符合正则规则的字符串是否存在包含,存在true,不存在false
    console.log(reg.test('hellodedd')); //true
    console.log(reg.test('hellOfff'));  //true
    console.log(reg.test('hellbo'));    //false

2.构造函数创建—省略new

	var reg = RegExp('hi', 'i');
    console.log(reg.test('hhhhhi'));    //true

3.字面量创建—正则一定是字符串,不能加变量,更不能出现引号

	var reg = /abc/i;
    console.log(reg.test('abcdd')); //true

三、匹配字符规则
1.[]:匹配某个范围中的一个字符
[a-z]:匹配所有的小写字母中的一个
[A-Z]:匹配所有的大写字母中的一个
[a-zA-A]:匹配所有的字母中的一个
[a-zA-Z0-9]:匹配所有的字母和数字中的一个
[^a-z]取反不包括小写字母

	var reg = /[2-9]/ //匹配数字2-9之间的任意一个
    console.log(reg.test('35w'));   //true
    var reg = /[^a-z]/; //非小写字母
    console.log(reg.test('f')); //false
  1. \d 0-9数字 \D 非数字
  2. \w:[a-zA-Z0-9_] 匹配字母数字和下划线 \W 相当于[^a-zA-Z0-9_] 匹配非字母数字和下划线
  3. \s 匹配空白字符,空格字符
    5.行首行尾匹配 等价匹配 ^行首匹配 $行尾匹配
    6.重复的字符
    ?:匹配字符0或1个
	var reg = /^a?$/;   //0个或1个a
    console.log(reg.test(''));  //true
    console.log(reg.test('a')); //true
    console.log(reg.test('aaa'));   //false
*:匹配字符0个或多个
	var reg = /^a*$/;   //0个或多个a
    console.log(reg.test(''));  //true
    console.log(reg.test('a')); //true
    console.log(reg.test('aaa'));   //true
    console.log(reg.test('aaax'));  //false
+:匹配前面的字符1或任意多个
	var reg = /^a+$/;//匹配1或任意多个a
    console.log(reg.test('')); //false
    console.log(reg.test('a')); //true
    console.log(reg.test('aaaa')); //true
    console.log(reg.test('aaaac')); //false
()分组:
	var reg = /^abc+$/; //匹配ab和一个或者多个c
    console.log(reg.test('abc'));   //true
    console.log(reg.test('abccc')); //true
    console.log(reg.test('abcabc')) //false

{}:数量范围
a{5} 匹配5个a
a{5, 10}最少5个最多10个
a{5,}最少5个

	var reg = /^(abc){3}$/; //匹配3个abc
    console.log(reg.test('abcabcabc')); //true
    console.log(reg.test('abcabc'));    //false
    console.log(reg.test('abcabcabcabc'));  //false
	var reg = /^(abc){2,4}$/;    //匹配2到4个abc
    console.log(reg.test('abcabcabc')); //true
    console.log(reg.test('abcabc'));    //true
    console.log(reg.test('abc'));   //false
	var reg = /^(abc){2,}$/;    //匹配两个以上abc
    console.log(reg.test('abcabcabc')); //true
    console.log(reg.test('abcabc'));    //true
    console.log(reg.test('abcabcabcabcabcabc'));    //true
    console.log(reg.test('abc'));   //false

7.替代字符—经常和()配合使用

	var reg = /^(who|what|where)$/;
    console.log(reg.test('what'));  //true
    console.log(reg.test('who'));   //true
    console.log(reg.test('awhat')); //false

四、修饰符
1.i:忽略大小写

	var reg = /aBc/i;
    var str = 'abchcbaabc';
    console.log(reg.test(str)); //true

2.g:全局匹配
字符串的方法:使用replace(正则表达式,替换的字符)替换匹配到的数据

	var reg = /[a-z]/g; //匹配任意一个小写字母
    var str = '1a2b3c4d5e6';
    console.log(str.replace(reg, '*')); //将字母换成*   1*2*3*4*5*6
	var reg = /[a-z]+/g;    //匹配一个或多个字母
    var str = '1aaa2bbccbb3eeeee4ffffff5';
    console.log(str.replace(reg, '*'));
	var reg = /[a-z]+/ig;
    var str ='1aAaAa2bbBccBbb3eeeEEee4fffFFfff5';
    console.log(str.replace(reg, '&')); //1&2&3&4&5

3.m:多行匹配----次要

	console.log('ab\ncd\nefg');
    var str = 'ab\ncd\nefg';
    var reg = /^a/;
    var reg1 = /^c/m;  
    var reg2 = /b$/m;  
    console.log(reg.test(str)); //true
    console.log(reg1.test(str));    //true
    console.log(reg2.test(str));    //true

五、正则和字符串合作的方法
1.使用 replace 替换匹配到的数据,2个参数:参1代表正则,参2代表用来替换的字符
1.1字符串过滤(敏感词过滤)

	var str = '这件衣服是你妈的还是你妹的我猜是你大爷的';
    var reg = /妈|妹|大爷/g;
    console.log(str.replace(reg, '*')); //这件衣服是你*的还是你*的我猜是你*的
1.2字符串首尾去空格-----字符串方法---trim();
将空格替换成空隙
	var str = '     abc   ddcdv   dcdc   ';
    console.log(str);
    console.log(str.trim());    //系统提供的字符串方法
    
    function copyTrim(str){
        return str.replace(/^\s+|\s+$/g, '');   //将行首或者行尾的空格替换成空隙。
    }
    console.log(copyTrim(str));
2. 使用match(正则)方法获取匹配内容,返回数组

exec():正则下面的方法,作用和上面相似,和全局没有关系。

	var str = '124daff1223jfk32478fadshf324789hsjfhjkds23847';
    console.log(str.match(/\d/g));  //["1", "2", "4", "1", "2", "2", "3", "3", "2", "4", "7", "8", "3", "2", "4", "7", "8", "9", "2", "3", "8", "4", "7"]
    console.log(str.match(/\d+/g)); //["124", "1223", "32478", "324789", "23847"]
    console.log(str.match(/\d+/));
    console.log(/\d+/.exec(str));   //和38行代码一样
    
    var str = 'hello你好hi大家好hehe';
    console.log(str.match(/[\u4e00-\u9fa5]+/g));    //["你好", "大家好"]

3.使用split将字符串转换成数组

	var str = 'a1b2c3d4e5f';
    console.log(str.split('3'));    //["a1b2c", "d4e5f"]
    console.log(str.split(/[0-9]/g))    //["a", "b", "c", "d", "e", "f"]

4.使用search来查找匹配数据,和全局没有关系,查找第一个匹配值的位置

 	var str = 'abcdabcd';
    console.log(str.search('b'));   //1
    console.log(str.search(/b/g));  //1

五、正则案例实现
主要是表单验证功能

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值