正则

      以前听同学说,他正则只学了一些基础,用到复杂的都是网上copy下来用,后来参加工作了发现确实一个项目中用到的复杂正则其实不多,因为自己写一个正则必须理解这个模式的规则,像匹配身份证的regexp,估计没多少人会真的去研究每一位是代表什么/能匹配到哪个数字。今天稍微复习一下。
一.创建:
直接量创建: var a=/s$/;
RegExp构造函数创建:var a= new RegExp("s$");
二.字符:
直接量字符:字母数字
转义字符:\o(NUL字符)、\t(制表符)、\n(换行符)、\v(垂直制表)、\f(换页符)、\r(回车符)
特殊含义标点符:^ $ . * + ? = ! : | \ / () {} []    使用这些符号的直接量时,加\转义
三.字符类:
[...]
[^...]
· 除换行符和其他Unicode的行终止符之外的任意字符
\w
\W
\s
\S
\d
\D
[\b]退格直接量
四.重复字符语法
{n,m}
{n,}
{n}
?
+
*
非贪婪匹配:+、?、*后面加?,尽可能少的匹配,但正则的模式匹配总是试图寻找第一个匹配的位置
五.选择、分组、引用
1./ab|ac|ef/,匹配次序从左到右,发现匹配项就忽略右边
2.圆括号作用:
a.把单独的项组合成子表达式,以便使用|、+、?、*,/(cd|ef)?|ab/
b.在完整的模式中定义子模式
c.在同一正则表达式的后部引用前面的自表达式的文本,/['"][^'"]\1/,正则中不允许双引号括起来的内容有单引号,反之亦然。\1表示['"]中匹配到的'或"文本,数字是从左到右左括号的出现引索
3.(?:),仅分组,不参与引用
六.修饰符
i:不区分大小写的匹配
g:全局匹配
m:多行匹配
七:锚字符
^、$、\b、\B、(?=p)、(?!p)
八.用于模式匹配的String方法
.search(/script/i)  返回第一个匹配的子串的位置,没有则返回-1.第一个参数是正则,不支持全局,忽略g
.replace(),第一个参数是正则/字符串,第二个参数是取代模式的字符串。正则表达式会记住每个匹配的子串的文本,通过其左括号的索引引用,在replace函数中,则通过在字符串添加'$num'引用,num是子串的索引。replace的第二个参数可以是函数,用以动态计算替换字符串。
.match(),唯一参数是正则,返回匹配的字符串数组。设置g,结果数组是所有匹配。没有设置g,a[0]是第一个匹配字符串,a[n]是第n个匹配子表达式
.split(),传入一个字符串或正则作为分隔符,将对象拆分为字符串数组。
九.RegExp
var a=new RegExp("\\d{5}","g");第一个参数是正则直接量,第二个参数是可选修饰符, 字符串表示的正则"\"要改成"\\"
5个属性:source、ignoreCase、global、multiline、lastIndex
.exec(传入字符串),没有找到匹配则返回null,结果是数组,同String的match方法.属性index--发生匹配的字符串位置,属性input引用正在检测的字符串
.test(传入字符串),如果传入字符串包含一个匹配结果,返回true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值