正则表达式

本文详细介绍了正则表达式的基本概念、创建方法、常用方法及各种匹配规则,包括元字符、重复类、量词符、字符类、修饰符等,并提供了实例演示。

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

正则表达式是一种描述字符串结构的语法规则,是用于匹配字符串中字符组合的模式,同时正则表达式也是对象。

正则表达式的创建

1. 使用RegExp构造函数

var re = new RegExp("a");

2. 使用字面量(常用方法)

var re = /a/;

正则表达式的方法

1. test()

返回一个布尔值,方法用于匹配字符串,匹配成功返回true,失败返回false;

2. exec()

返回匹配结果,发现匹配,就返回一个以每个匹配成功的字符串组成的类数组集合,否则返回null,index表示匹配项在字符串中的位置,input表示原字符串

字符串匹配规则

1. 字面量字符

在正则表达式中,某个字符指标是它字面的含义,比如/a/匹配a

2. 元字符

除字面量字符以外,还有一部分字符由特殊的含义,不代表字面意思,叫“元字符”。如果要匹配他们本身,需要在他们前面加上反斜杠进行转义,比如匹配加号,就要写成\+。

正则中需要用斜杠转义的字符:^、[、]、$、(、)、l、*、+、?、{、]、\

如果使用RegExp方法生成正则对象,转义需要使用两个斜杠,因为字符串内部会先转义一次。

点字符.  :       匹配除回车\r、换行\n、/行分隔符\u2028、段分隔符\u2029以外的所有字符

位置字符^表示字符串的开始位置          $表示字符串的结束位置

竖线符号|  :在正则中表示“或关系”即a|b表示匹配a或b

3.重复类

模式的精确匹配次数,用大括号{}表示

{n}表示恰好重复n次,

{n,}表示重复不少于n次,

{n,m}表示重复不少于n次,不多于m次

4. 量词符

?问号 表示某个模式出现0次或1次,等同于{0,1},最多1次

* 星号 表示某个模式出现0次或者多次,等同于{0,},无影响

+ 加号 表示某个模式出现1次或者多次,等同于{1,},至少1次

5. 字符类

表示有一系列字符可供选择,只要匹配其中一个就可以,所有可供选择的字符都放在方括号内

如:[abc]表示a、b、c中任选一个匹配

脱字符^ :如果方括号内第一个字符是[^],则表示除了字符类中的字符,其他字符都可以匹配,如[^abc]表示除了a、b、c之外都可以匹配。

连字符- :对于连续序列的字符,连字符用来提供简写形式,表示字符的连续范围。如[abc]可写成[a-c]、[0123456789]可以写成[0-9][A-Z]表示26个大写字母中文[\u4e00-\u9fa5]

6. 修饰符

修饰符表示模式的附加规则,放在正则模式的最尾部,修饰符可以单个使用,也可以多个一起使用。

g  默认情况下,第一次匹配成功后,正则对象就停止向下匹配,g修饰符表示全局匹配

 默认情况下,正则对象区分字母的大小写,加上i修饰符以后表示忽略大小写

表示多行模式,会修改^和$的行为,默认情况下, '和$匹配字符串的开始处和结尾处,加上m修饰符后,和$会识别换行符\n

7. 预定义模式

指某些常见模式的简写方式

\d  匹配0-9之间的任一数字,相当于[0-9]

\D  匹配所有0-9以外的字符,相当于[^0-9]

\w  匹配任意的字母、数字和下划线,相当于[A-Za-z0-9]

\W  除所有字母,数字和下划线以外的字符,相当于[^A-Za-zO-9_]

\s   匹配空格,包括制表符、空格符、断行符等

\S   匹配非空格的字符

\b   匹配单词的后边界

\B   匹配非单词边界

8. 特殊字符

[\b]        匹配退格键

\n          匹配换行键

\r           匹配回车键

\f           匹配换页符

\t           查找制表符tab

9. 组匹配

正则表达式的括号表示分组匹配,括号中的模式可以用来匹配分组的内容

var str = 'abcdef';

var reg =[(abc)(def)];

str.match(reg); ['a’,'b','c']

匹配方法

1. match()
        接受一个参数,正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null
2. search()
        参数与match相同,返回字符串中第一个匹配项的索引,没有匹配项返回-1
3. replace()
        用于替换,接受两个参数,第一个是匹配项,第二个可以是字符串或是一个函数

使用:字符串.方法(正则)

实例

    var str = "abc123def";
    var patt1 = /[0-9]+/;
    document.write(str.match(patt1));
    // 匹配手机号
    var reg = /^1[35789]\d{9}$/;

    // 匹配QQ号
    var reg = /^\d{6,10}$/;

    // 匹配Email地址
    var reg = /\w+@\w+\.(com|cn|net)/;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值