正则表达式

正则表达式
正则表达式(regular expression-RegExp):是被用来匹配字符串中的字符组合的模式,是最简单的数据(字符串)验证方法,常用表单的验证
	创建方法:使用正则字面量,/表达式/
正则数据类型:引用数据类型,因此也提供了一些方法
正则方法
	exec()	
		用来将首次匹配到的字符串以数组方式输出,没有全局匹配
		没有返回条件的将返回null
	test()
		用于检测字符串中是否含有正则表达式匹配的字符串
		返回值:含有返回true,不含返回false
    <script>
        // 定义字符串
        var str = 'hello';
        var reg = /ll/;
        // 用来将首次匹配到的字符串以数组方式输出,没有全局匹配
        // let result = reg.exec(str);
        // console.log(result);
        // 用于检测字符串中是否含有正则表达式匹配的字符串
		// 返回值:含有返回true,不含返回false
        let result = reg.test(str);
        console.log(result);
    </script>
正则的字符串相关方法
配合正则表达式方法有两种,一种是字符串的方法,一种是正则表达式的方法,以下是字符串方法
split()
	用匹配到的字符切割父字符串返回切割后字符组成的数组。参数:使用正则
match()
	用于匹配字符串,将匹配到的字符串以数组方式输出
	参数可以使用字符串或者正则
search()
	用于首次匹配到的字符串所在的位置,没有全局匹配
replace()
	用于将匹配到的字符串替换为新字符串
		第一个参数:匹配到的字符串
		第二个参数:要替换的新字符串
    <script>
        // 截取单词
        // let str = 'hello world      abc';
        // console.log(str.split(' '));    // 会将空格也返回回来
        // console.log(str.split(/ +/));

        // 字符串匹配
        // var str = 'hello icKt abc';
        // console.log(str.match('world'));      // 
        // console.log(str.match(/world/i));    // i 匹配不区分大小写

        // 字符串搜索
        // var str = 'hello worldabc';
        // console.log(str.search('world'));

        // 字符串替换
        var str = 'hello worldabc';
        console.log(str.replace('world', 'WORLD'));   // 返回值是替换的结果,原始字符串没有发生改变
    </script>
正则表达式的术语和操作符
正则表达式的组成:由普通字符和特殊字符(元字符)组成
	普通字符包括:字母,或者是数字
	特殊字符:() {} [] \ / | ^ $ ? + .
正则中特殊字符必须使用转义字符\
修饰符
	书写在正则表达式后面,如://g
		g	执行全局匹配
		i	忽略大小写的匹配
		m	多行匹配
字符集
把所有匹配的可能性都书写在中括号内,用于匹配一个字符
	简单类		直接书写所有的可能性
		比如:[abc]表示匹配的结果可能是a或者b或者c
	范围类		表示一类可能性	[0-9][a-z][A-Z]
	组合类		表示不同类型的范围组合[0-9a-z] [a-zA-Z]
	负向类		表示不包含后面书写匹配字符串的可能性,[^]必须书写在中括号左侧
边界
^	开头匹配
$	结尾匹配
\b	单词边界,用于查找位于单词开头或者结尾的匹配
\B	非单词边界,用于查找不处在单词开头或结尾的匹配
量词
{n}		硬性量词,表示出现n次
{n,m}	软性量词,表示至少出现n次,最多不能超过m次
{n,}	表示至少出现n次
+		表示至少出现1次	{1,}
*		表示出现0次或者多次	{0,}
?		表示出现0或者1次	{0, 1}
分组
或操作符:| 表示可能性,如a|b|c
用于处理多个重复的数据,通过()定义分组
分组的反向引用
	表示正则表达式匹配的字符串再次进行使用。\编号(正则表达式中使用),$编号(在正则表达式外使用)。编码从1开始,依次进行分组的编码。1,2,3...
	一个分组就是一个编码,只能在正则使用
非捕获组:不会创建反向引用的分组
	(?=exp)	表示其后紧接指定字符串的字符串
	(?!exp)	表示其后没有紧接字符串的字符串
    <script>
        // 交换乘数位置456*123
        // let str = '123*456';
        // replace的第二个参数可以是字符串,可以是函数 回调函数的返回值是要替换的内容
        // match是匹配到的内容,$1是第一个分组的内容,$2是第二个分组的内容
        // console.log(str.replace(/([0-9]+)\*([0-9]+)/, function(match, $1, $2) {
        //     return $2 + '*' + $1
        // }));

        // 外部捕获用$
        // let str = '123*456';
        // console.log(str.replace(/([0-9]+)\*([0-9]+)/, '$2*$1'));
        // 内部捕获用\
        // 内部匹配,只能匹配前后值一样的
        let str = 'hello:123*123';
        console.log(str.replace(/([0-9]+)\*(\1)/, '$1+$2'));
    </script>
预定义类
预定义类表示一类字符,是一些特殊字符集的简写
	.	表示除了换行和回车之外的任意字符
	\d	表示数字字符
	\D	表示非数字字符
	\s	表示空白字符
	\S	表示非空白字符
	\w	表示单词字符(所有的 数字字母下划线)
	\W	表示非单词字符
	匹配中文:[\u4e00-\u9fa5],是一个固定用法,中文只能在正则表达式里这样表示
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值