正则表达式

来源:互联网 发布:金融大数据对股市预测 编辑:程序博客网 时间:2024/05/19 07:07

正则表达式:字符串中字符出现的规律(验证字符串格式,查找关键字,替换关键字)

比如:银行卡查询密码:6位数字;用户名:字母,数字,_  的组合


正则表达式:

选择符号:

[所有备选字符]  (一个[ ],只能代表1位字符的选择规则)

[^XXXX]:表示除了xxxx都行,必须放在第一个位置,否则,变为普通字符匹配。

-  符号:备选字符的连续范围。如:[0-9],[a-z],[A-Z],[a-zA-Z],[\u4e00-\u9fa5](汉字)

预定义字符集:使用简化的符号,定义常用字符集。比如:[0-9]--->\d     字母,数字和下划线----->\w       空字符---->\s

              如果规则正文本出现特殊符号,用“ \ “”转为原文。

. ”:一个任意字符。

数量词:规定前边一个字符出现次数的量词。

语法:{min,max}:从min位到max位       {num}:固定长度     {min, }:至少min个,多了不限


特殊数量词:

+:至少出现一次,不限制出现次数

*:可有可无,不限制出现次数

? :可有可无,最多只能有一位


( ):分组,改变模式的匹配顺序      

 比如:验证身份证号:\d{15}(\d{2}[0-9xX])?

             验证手机号:(\+86)?\s*1[34578]\d{9}

            验证座机号码:\d{3,4}-\d{7,8}


^:整个正则表达式的开头,表示以XXX开始

$:整个正则表达式的结尾,表示以XXX结尾

?=XXX:预判,前一个字符之后,必须紧跟XXX结尾

?!XXX:预判,前一个字符之后,不能紧跟XXX


中文姓名:[\u4e00-\u9fa5]{2,6}

邮箱:\w+@\w+([-]\w+)*(\.\w+)+

        其中:\w+([-]\w+)*  -----------匹配域名

                   一个以上的字母,后可紧跟“-字母”,可有可无

                  (\.\w+)+   --------------->“. 字母”组合至少出现一次


RegExp对象:专门封装一条正则表达式,提供使用正则表达式API

如何使用?   1.创建  2.调用API

创建:var  regExp = /正则表达式/ig;

API:var boolean = regExp.test("被检查的字符串")    (如果验证通过,返回true;否则返回false)


验证VS查找:验证要求完整匹配!查找要求不符匹配。


test方法默认:只要找到就返回true!

正则表达式前加^,后加$,实现完整匹配。表示从头到尾完整匹配。


查找:exec:查找关键字的位置,又能找到关键字的内容

indexOf:不支持正则;search:支持正则,每次只能找到一个;match:所有内容,但得不到位置!


var arr=regExp.exec("被查找的内容")

arr[0]:找到的关键字内容

arr.index属性:找到的关键字的位置

exec方法每次只能找1个,但是每次自动修改regExp对象的LastIndex属性

regExp对象的LastIndex属性,表示下次开始匹配的位置!

仅判断有没有,或者进查找位置:str.indexOf()

支持正则表达式:str.search()

仅找所有关键字的内容:str.match()

即找到位置,又找到内容:regExp.exec()


如果正则表达式会动态变化,虽然很少用。

var regExp=new RegExp("\\d{6}",g);  动态创建

强调:所有\都要改为\\


贪婪模式:.+   .*  ,默认先匹配整个字符串,再缩小范围。

懒惰模式:(.+?)  (.*?) ,从第一个字符开始,向后扩展范围。


从正则表达式匹配的内容中,取一部分:RegExp.$n

n:正则表达式中第n个分组,其实就是第n个圆括号

强调:分组从1开始

必须通过RegExp类型,直接调用$n,不能使用对象!


String对象与正则表达式:

str.replace(/no/ig,"替换值");

str.match(/正则表达式/ig)

str.search()

str.split(/正则表达式/)


RegExp对象总结:

var reg=/正则表达式/ig;

验证str中是否包含reg匹配的关键字: var boolean = reg.test(str);

*  强调:完整验证,都需要在正则表达式前加^后加$   *

while((arr=reg.exec(str))!=null){

       arr[0];--------------->找到的一个关键

       arr.index----------->当前关键字的位置

}

RegExp.$n:获得正则表达式中的第n个分组(圆括号)。

原创粉丝点击