正则表达式详解

本文详细介绍了JavaScript中正则表达式的创建方法,组成部分(规则和修饰符),test()和exec()方法的应用,以及特殊字符、字符匹配符、选择匹配符和转义字符的使用。通过实例演示了如何构造和应用这些正则表达式。
摘要由CSDN通过智能技术生成

一、正则的创建方式

1.字面量创建

var reg = /day/ig;

2.构造函数创建

var reg = new RegExp("day", "ig");

二、正则表达式的组成

a.规则(表达式) 写在//之间

b.修饰符: i(忽略大小写)、 g(全局匹配(匹配整个字符串,多次) 如果不加g,默认只匹配一次)

三、正则的方法

test() :判断字符串中是否含有符合规则的某个或某段字符。有则返回true;没有则返回false

var str = "It was a beautiful day";
var reg = /beautiful/i;
var result = reg.test(str);//运行结果:true 

exec():类似字符串的match方法,将符合规则的某个或某段字符提取出来放到数组中(注意: 始终只匹配一次, 加g也没有用) 

var str = "It was a beautiful day beautiful day";
var reg = /beautiful/ig;
var arr = reg.exec(str);//运行结果:["beautiful"];

四、正则表达式中的字符

a.普通字符  a-z  A-Z  0-9    eg./beautiful/

b.特殊字符(在正则表达式中有特殊含义的字符)

(1)特殊字符-限定符【指定正则表达式中子表达式需要匹配多少次才满足】

*          匹配前面的子表达式出现0次或多次 = {0,}

            eg.var reg = /go*d/;(*前面的字符o出现0次或多次)

+         匹配前面的子表达式出现1次或多次 = {1,}

            eg.var reg = /go*d/;(*前面的字符o出现1次或多次)

?         匹配前面的子表达式出现0次或1次 = {0,1}

            eg.var reg = /(good)?/;(*前面的字符good出现0次或1次)

{n}       匹配n次(精确匹配)

            eg.var reg = /go{2}d/;({2}前面的字符o出现2次)

{n,}      至少匹配n次

{n,m}   至少匹配n次,最多m次 

 (2)特殊字符-定位符

^     匹配字符串开始的位置         以...开头

$     匹配字符串结束的位置         以...结尾

【注意】:单独使用 ^和$ 不会将规则定死;同时使用 ^ 和 $ 才会在一定程度上将规则定死 eg.var reg = /^g/; //判断字符串是否以g开头,后面无所谓

eg.var reg = /^ga/; //判断字符串是否以g开头 且 临近的一个字符是a(也可以理解为判断字符串是否以ga开头)

eg.var reg = /good$/; //判断字符串是否以good结尾,前面的不管(qwer good符合该正则表达式)

eg.var reg = /^good$/; //字符串必须是good才满足该正则表达式

eg.var reg = /^go{2,}d$/; //字符串必须以g开头,紧接着必须至少有2个o,且以d结尾(gooood符合)

(3)特殊字符-字符匹配符【匹配字符集合中的任意一个】

/[xyz]/                                         字符集合,匹配xyz中的任意一个字符(含有'或'的关系)

/[0123456789]/ => /[0-9]/           匹配数字

/[qwertyuiopasdfghjklzxcvbnm]/ => /[a-z]/                         匹配小写字母 /[QWERTYUIOPASDFGHJKLZXCVBNM]/ => /[A-Z]/       匹配大写字母

/[0-9a-zA-Z_]/                             匹配数字、大小写字母、_中的任意一个

注意:在字符匹配符中 ^ 代表取反

        /[^xyz]/                                匹配除了xyz以外的任意一个字符

        /[^0-9]/                                匹配非数字(不严谨,非数字的范围太大)

注意:字符匹配符中可以使用字符簇

        /[0-9a-zA-Z_$]/ => /[\w$]/

字符簇(官方已经规定好的字符集合)

\d                                                 匹配数字 [0-9]

\D                                                 匹配非数字 [^0-9]

\w                                                 匹配数字 大小写字母 _ [0-9a-zA-Z_]

\W                                                匹配非数字 大小写字母 _ [^0-9a-zA-Z_]

\s                         匹配空白字符(换行符(\n)产生的空格 / 回车符(\r)产生的空格 / 空格)

\S                        匹配非空白字符(除了空白符以外的任意字符)

.                           匹配除换行符(\n)以外的单个字符(基本上是任意字符)

[\u4e00-\u9fa5]                             匹配中文

【拓展】. 本身代表任意字符 => 若需要转化位普通字符. => 转义\. 

(4)特殊字符-选择匹配符

|         可以匹配多个规则(在正则表达式中代表"或"的关系 一般配合()使用)

/(red|green|blue)/ (不能使用中括号)

与字符匹配符区别:[xyz]字符集合,匹配xyz中的任意一个字符,是单个字符的'或'的关系 

(5)特殊字符-转义字符 【本身在正则表达式中含有特殊含义(特殊字符),如果想作为普通字符来使用就需要进行转义】

eg.        *         转义         \*

eg.        +        转义         \+

eg.        ?        转义         \? 

五、常用正则表达式举例

由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$

由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$

中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$

中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值