一、前言
1、概念
正则表达式(Regular Expression)是一种用于匹配和处理字符串的强大工具。它由一系列特殊字符和普通字符组成,用于描述字符串的模式。正则表达式常用于文本处理、网页解析、编程等领域。
2、作用
- 判断文本中的字符是否符合正则表达式。
- 替换文本中的指定字符。
二、语法
1、创建:
正则表达式创建的两种方式:
// 创建方式一:
var reg1 = new RegExp('pattern', 'attributes');
// 创建方式二:
var reg2 = /pattern/attributes
参数 pattern:是一个字符串,指定了正则表达式的模式或其它正则表达式。
参数 attributes:是一个可选的字符串,包含属性 'g'、'i' 分别用于指定全局匹配、区分大小写的匹配。
返回值:一个新的 RegExp 对象,具有指定的模式和标志。
2、使用方法
在JavaScript中,正则表达式通常用于两个字符串方法:search() 和 replace()。
search() 方法用于检索字符串中指定的子字符串,或检索于正则表达式相匹配的子字符串,并返回子字符串的起始位置(下标)。
replace() 方法用于在字符串中用一些字符串替换另一些字符串,或替换一个与正则表达式匹配的子串。
var str = '56468aaa421347ddd1153115bbb697988425';
var reg = /[a-z]/ig;
//查找子字符串 aaa在字符串 str中的起始位置的下标。
var a = str.search(reg, 'aaa'); // 5
//将字符串 str中的英文字母去掉。( a到 z,不区分大小写)
var b = str.replace(reg, ''); // 564684213471153115697988425
3、操作方法
方法 | 描述 |
String.prototype.replace() | 字符串替换 |
String.prototype.search() | 字符串查找 |
String.prototype.match() | 字符串匹配提取 |
String.prototype.split() | 字符串根据正则表达式分割 |
RegExp.prototype.test() | 根据正则规则验证字符串 |
RegExp.prototype.exec() | 根据正则表达式规则提取字符串 |
三、修饰符
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
m | 执行多行匹配。 |
元字符 | 描述 |
---|---|
. | 匹配除换行符之外的任意字符 |
\w | 匹配字母数字下划线,等同于:[a-zA-Z0-9_] |
\s | 匹配任意空白符 |
\d | 匹配数字,等同于[0-9] |
\b | 匹配单词边界 |
| | 或匹配,如 /x|y/ 正则可匹配x或y两个字符 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
反义符 | 描述 |
[^x] | 匹配除“x”之外的所有字符,其中“x”可以为任意字符 |
[^xyz] | 同上,匹配除“x、y、z”之外的任意字符 |
\W | 匹配除了字母、数字、下划线之外的所有字符,等同于:[^\w] |
\S | 匹配除空白符之外的任意字符,等同于:[^\s] |
\B | 匹配不是单词边界的字符,等同于:[^\b] |
\D | 匹配不是数字的所有字符,等同于:[^\d] |
转义符 | 描述 |
\xnn | 匹配十六进制数 |
\f | 匹配换页符,等同于:\x0c |
\n | 匹配换行符,等同于:\x0a |
\r | 匹配回车符,等同于:\x0d |
\t | 匹配水平制表符,等同于:\x09 |
\v | 匹配垂直制表符,等同于:\x0b |
\unnnn | 匹配Unicode字符,如:\u00A0 |
重复匹配字符 | 描述 |
---|---|
* | 重复出现零次或多次 |
+ | 重复出现一次或多次 |
? | 重复出现零次或一次 |
{n} | 重复出现n次 |
{n,} | 至少重复出现n次 |
{m,n} | 重复重现m到n次,其中,m<n |
贪婪字符 | 描述 |
*? | 重复任意次,但尽可能少的重复 |
+? | 重复一次或多次,但尽可能少的重复 |
?? | 重复零次或一次,但尽可能少的重复 |
{m,n}? | 重复m到n次,但尽可能少的重复 |
{n,}? | 重复n次以上,但尽可能少的重复 |