关于正则表达式的一些基础知识
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于正则表达式的一些基础知识相关的知识,希望对你有一定的参考价值。
预定义类,特殊类:
1.\d [0-9]
2.. [^\r\n],非\r和\n外的所有字符
3.\D [^0-9]
4.//代表/本身
5.\s[\t\n\xOB\f\r] 空白符
6.\w[a-zA-Z_0-9]单词字符(字母.数字,下划线)
7.\W[^a-zA-Z_0-9]非单词字符
修饰符:
修饰符用于正则匹配公式//后面,如/\d/g,/*.{5,8}/g
1.g,匹配字符串所有字符,多次匹配,不添加搜索到第一个匹配停止,
2.i ignore case 忽略大小写
3.m:multiple lines 多行搜索
特殊字符:* + ? $ ^ . | \ () {} []
[]:字符类,把一系列匹配符归为一类,符合类里面任意一个匹配方式即可
如:‘1b2c3d4e5‘.replace(/[abc]/g,‘x‘)
//"1x2x3d4e5"
^:反向类,用于匹配不属于某类的内容,仅用于中括号内
如:‘1b2c3d4e5‘.replace(/[^abc]/g,‘x‘)
//xbxcxxxxx"
-:范围类,[a-z],用于匹配a到z之间的字符
如‘a1b2c3d4x5z9‘.replace(/[a-z]/g,‘啊‘)
//"啊1啊2啊3啊4啊5啊9"
注意:匹配-(横线)与范围类字符时,只要在后面加-即可,如‘2015-12-01‘.replace(/[0-9-]/g,‘a‘)//"aaaaaaaaaa"
边界符:
^:以XXX开始,需在中括号外使用
$:以XXX结束,需在中括号外使用
^和$分别代表字符串的开始和结束,因此^\d$只能匹配包含一个数字的字符串
\b:单词边界
\B:非单词边界
\b匹配的是字之间的看不见的边界,每个单词前后都有 \b
量词:
?:出现一次或没有
+:出现一次或多次
*:出现任意次
{n}:出现n次
{n,m}:出现n-m次
{n,}:出现最少n次
分组:用()可以达到分组功能,使量词作用于分组
如:检测字符串中是否有7个boy
/boy{7}/g.test(‘boyboyboyboyyyyyyy‘)
//true
因为这里匹配的是y{7}
/(boy){7}/g.test(‘boyboyboyboyyyyyyy‘)
或符号:|
反向引用:分组后可以用$num代表一个分组,用于字符串位移
如:把2016-11-25改成11/25/16
‘2016-11-25‘.replace(/(\d{4})-(\d{2})-(\d{2})/g,‘$3/$2/$1‘)
//"25/11/2016"
匹配函数使用方式: 注意:默认大小写敏感
匹配判断
方式1. /正则公式/.test(要匹配的参数),返回值true or false
如/\d\d\d/.test("123"), //true
方式2. 显式调用方式,new RegExp(正则公式).test(要匹配参数)
如new RegExp(/\d\d\d/).test(123),//true
匹配替换
方式1.JS里字符串默认自带的函数: 要匹配的字符串.replace(正则公式,替换字符),返回值为替换后的字符串
如‘He is a boy.This is a dog.where is he?‘.replace(/\bis\b/,‘IS‘)
//"He IS a boy.This is a dog.where is he?"
方式2.RegExp构造函数:首先声明 var reg=new RegExp(正则公式,匹配方式),然后要匹配的字符串.replace(正则对象,替换字符)
如:var reg=new RegExp(‘\\bis\\b‘,‘g‘)
‘He is a boy.This is a dog.where is he?‘.replace(reg,‘IS‘)
//"He IS a boy.This IS a dog.where IS he?"
注意:方式2里,RegExp构造函数函数的第一个参数需要传的是字符串而不是匹配公式,所以\需要转意为\\
以上是关于关于正则表达式的一些基础知识的主要内容,如果未能解决你的问题,请参考以下文章