正则表达式

本文深入探讨了正则表达式的构造、使用及各种高级特性,包括变量引入、电话号码验证、贪婪与非贪婪模式、特殊字符匹配等,适用于前端、后端及全栈开发者的深入学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                              正则表达式

1.正则对应的构造函数:RegExp;

2.创建正则表达式:

    直接量:/ /;

    New关键字:new RegExp(“正则”,“修饰符[11] ”);

3.汉字:/[\u4e00-\u9fa5]/g

4.正则中引入变量的方式;

    Eg: var char = “c”;

       var exp = new  RegExp(char,“g”);   è   /c/g

       或 var exp = eval(`/${char}/g`);

5.验证电话:

var phone = “18636002092”

var exp = /^1[3-9]{1}[0-9]{9}$/

^表示以1开头

[3-9]{1}表示第二位数字是3-9,并且匹配1个;

[0-9]{9}表示从第三位开始匹配,匹配九次;

6.正则一般是贪婪模式,加?后就是费贪婪模式。

详见13

Eg:

贪婪模式匹配

var str = “jbwrbgagruimone”;

str.match(/[a-z]{6}/g);         [“jbwrbg”,“agruim”]

str.match(/[a-z]{2,6}/g);       [“jbwrbg”,“agruim”,“one”]

非贪婪模式匹配(使用?)

str.match(/[a-z]{2,6}?/g);     [“jb”,“wr”,“bg”,“ag”,“ru”,“im”,“on”]

7.\s 空格;   \S除去空格之外的所有字符

8.整个正则是个大分组,大分组在拆分成若干个小分组用“()

Eg: var str = “jguwr123hewo456fhwo”;

    var exp = /([a-z]+)([0-9]+)/g     

    console.log(str.match(exp))       ["jguwr123", "hewo456"]

9.?!或?=

var str = “This is a isbox!”

var exp = /is(?!\s)/g ;

console.log(str.match(exp))   表示后面没有空格的is=>    [“is”]

var exp = /is(?=\s)/g ;

console.log(str.match(exp))   表示后面有空格的is=>[“is”,“is”]

10.“|”:表示选择;

Eg: var str = “ f g s ”;

          忽略左右空格:str.replace(/^[\s]+|[\s]+$/g,“”) “f g s”

                                              不写$会忽略全部

11.“?”表示匹配0或1次

12.“\”表示转义符

Eg:\r\n 表示换行符(回车)

    “\w”===“[0-9A-z_]” 匹配0-9,A-z,下划线

    “.”===“[^\r\n]”    匹配除换行符以外的任意字符

    “\b”                 匹配单词的开始或结束

    “^”                  匹配字符串的开始

    “$”                  匹配字符串的结束

    “\d”                 匹配数字

    “[^x]”               匹配除了x以外的任意字符

    “[^aeiou]”           匹配除了aeiou以外的任意字符

   

13.

“*”                  重复0次或多次

“*?”                 表示重复任意次,但尽可能少重复

“+”                  重复1次或多次

“+?”                 重复1次或多次,但尽可能少重复

“?”                 重复0次或1次

“??”                 重复0次或1次, 但尽可能少重复

{n}                    重复n次

{n,}                   重复n次或多次

{n,}?                 重复n次或多次, 但尽可能少重复

{n,m}                  重复n次到m次

{n,m}?                重复n次到m次,但尽可能少重复

14.“[]”  表示取其中的一个,只占一个字符

Eg:[abc]表示匹配a或b或c

15.exec: 会返回正则匹配到的数据(数组的形式)

index:表示匹配字符开始的数据;

input: 表匹配的字符串;

length:表示每一次根据正面的规则匹配到的数据,子表达式越多,length值越大,没有子表达式,length值为1;

eg: var reg = /(hello)\s(world)\s\1\s\2/  

“1”:表示匹配到第一个子表达式(hello) “2”:表示匹配到第二个子表达式(world)

    var str = “hello world hello world”;

    reg.text(str);   =>   true

16.split: 可以以正则来分割字符串;

search:匹配正则规则里在字符串中出现的位置;

match:方法当不加g时会返回正则匹配的内容和分组的内容,还包括匹配   内容开始的索引(index),还有input属性;加g后,返回的是所有能和正则匹配的内容。

    Eg:var str = “sf32sk33sd49”;

        var arr = [];

        var newStr = str.replace(/\d+/g, function(a){

   arr.push(a)

})     arr = [“32”,“33”,“49”]

Replace后面函数中第一个参数表示匹配到的字符串,如果有子表达式,则有几个就会有几个参数体现,接着才是下标,整个字符串;如果没有子表达式,第二个参数是匹配到的起始下标,第三个参数是整个字符串。

match后面的函数中不是全局匹配同没有子表达式一致。


 [11]g: global(全局)

i: ignore(忽略大小写)

m: multiple(多行匹配)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值