正则表达式(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","*");
正向预查和负向预查
正则捕获的懒惰性和贪婪性