正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式,在JavaScript中,正则表达式也是对象

JavaScript创建正则表达式

使用RegExp对象创建

var hallo = new RegExp(/123/);

或者

var hallo = /123/;

检查是否符合该正则表达式

使用test方法判断字符串是否符合该规则的要求,返回的值是布尔值

console.log(hallo.test(123));

/123/只要包含123就返回true

正则表达式元字符

边界符(^和$)

^表示匹配行首的文本(以谁开始)

$表示行尾的文本(以谁结束)

var hallo = ^abc;

必须要abc开头,如果是aabc的话,返回false

var hallo = abc$;

必须要abc结尾,例如aabc,返回true

var hallo = ^abc$;

^和$一起使用就是精确匹配,必须是abc,如果是abcabc的话,返回false

字符类[]

var hallo = /[abc]/;

只要包含a,b,c其中一个字符都匹配,返回true,例如axx

var hallo = /^[abc]$/;

三选一,只有包含a,b,c其中单独的一个才匹配返回true,例如abc,就返回false

范围符-

var hallo = /^[a-z]$/;

多选一,a到z,包含26个字母任何一个字母都返回true,大小写敏感,A和a不一样

var hallo = /^[a-zA-Z0-9_-]$/;

多选一,包含26个字母(包含大小写)任何一个字母和数字(0到9)和下划线其中一个都返回true

取反

var hallo = /^[^a-z]$/;

在方括号内部加^,就是代表取反,不能包含a到z其中的一个字母


量词符(*,+,?)

var hallo = /a*/;

*相当于>=0,出现0次或者n次都返回true

var hallo = /a+/;

+相当于>=1,出现1次或者n次返回true

var hallo = /a?/;

?相当于 0 || 1,只要出现0次或者1次返回true

{n}:重复n次

{n,}:重复次数大于等于n次

{n,i}:重复次数大于等于n,并且小于等于16

量词是设定规则出现的次数

例如:

var hallo = /^[a-zA-Z0-9_-]{6,16}$/; console.log(hallo.test(“hallo123”)); // true

var hallo = /(abc){3}/;

将abc重复3次,abcabcabc才返回true

预定义类

预定义类指的是一些常用规则的简写,大小写敏感

\d:匹配0-9的任何数字 \D:匹配所有0-9以外的字符,取反 \w:匹配任何的字母,数字,下划线,相当于[a-zA-Z0-9_-] \W:匹配任何的字母,数字,下划线以外的字符,取反 \s:匹配空格(包含换行符,制表符,空格符等),相当于[\t\r\n\v\f] \S:匹配非空格,相当于[^\t\r\n\v\f]

\b 单词边界 /\bhello\b/` \B 除了单词边界

[^] 除了 [] 选择 - 之间 | 或 ^ 匹配开头 $ 匹配尾

替换

replace(),可以替换字符串或者正则表达式

replace(匹配字符串,被替换的字符串)

字符串

var hallo = “hallo”;

hallo.replace(“hallo”,“hi”);

正则表达式

var hallo = “hallo”;

hallo.replace("/hallo/",“hi”);

正则表达式参数

/表达式/[修饰符]

修饰符有3个值

g:全局匹配

i:忽略大小写

gi:全局匹配+忽略大小写

例如:

var hallo = “hallo”;

hallo.replace("/hallo|hi/g","*");


正向预查和负向预查


正则捕获的懒惰性和贪婪性