- 本质:用来记录文本规则的代码(为字符串定义规则,为输入内容定义规则)
- 表单验证
- 隐藏手机号码
- 正则构成:由一些普通字符(字母、数字)和元字符(具有特殊意义的字符)组成
- 正则声明:没有规则的正则表达式是没有意义的
- 创建正则表达式的两种方式
<1>通过构造函数定义(内置对象法)
var 变量名 = new ReggExp(/表达式/) ;
<2>通过直接量定义(字面量)
var 变量名 = /表达式/ ;
- 正则表达式的使用:test()方法
有一个返回值,返回值是bool类型,决定参数是否符合正则表达式
- 正则内部类(帮我们写好的工具直接使用)
- 预定义类(定义好的类,直接使用)
<1>[^\n\r]:除了换行和回车之外的任意字符(“”不行)
<2>\d:[0-9]数字字符
<3>\D:[^0-9]非数字字符
<4>\s:[\t\n\x\0B\f\r]空白字符串
<5>\S:非空白字符串
<6>\w:单词字符
<7>\W:非单词字符
<8>g:全局替换
<9>i:区分大小写
- 负向类(不能是其中的整体/一部分)
中括号内,前面加个元字符^表示进行取反,不是括号里面的字符(只要有一个字符是里面的内容就返回false;内容多了(不是多出来的那部分可以是中括号里面的内容,但是多出来的一定不能是中括号里面的内容)/没有返回true)
注意:^符号是一定要写在中括号里面的
- 范围类:又是匹配的东西过多,而且类型又相同,全部输入太麻烦,就可以在中间加个横线-(只要有字符是这个范围内的就返回true,不是这个范围内的就返回false)
- 组合类:用中括号匹配不同类型的单个字符
- 简单类(正则://中什么特殊符号都不写,或用[]加入)
<1>/string/.test(“string”); 必须是完整的,只能多不能少(意思就是前面的//里面写了string,后面的test(“”)里面就必须要包含string,只能多不能少)
例如:
console.log(/chaoge/.test("chaoge")) ; //true
console.log(/chaoge/.test("chaogenihao")) ; //true
console.log(/chaoge/.test("chaog")) ; //false
一句话,只要完整包含了andy就可以了(有它就行)
<2>/[string]/.test(“string”); 只要包含[]里面的任何一个字母就可以
/[andy]/.test(“andy”); //true
/[andy]/.test(“an”); //true
/[andy]/.test(“ady”); //true
/[andy]/.test(“anll”); //true
/[andy]/.test(“assd”); //true
/[andy]/.test(“ss”); //false
- 量词(重点)
(多个字母,重复最后一个)
*(贪婪)重负0次/更多(>=0)
à
/^a*$/.test(“a”);/^a*$/.test(“aaaaa”);a可以有多个或者是没有的时候返回的都是true
+(懒惰)重复一次/更多(>=1)
à
a有一个或者是多个返回的都是true
?(占有)重复0次/1次(0||1)à
只有a是一个或0个的时候返回的才是true
{}重复多少次的意思
à
{n}必须是出现n次才返回true(x=n);{n,}重复n次/更多次都可以返回true(x>=n);{n,m}重复出现的次数比n多但比m少才返回true(n<=x<=m)
x|y 一个| x或y(没有&,用的是“,”代替&)
()提高权限,有限计算
à
/(abc)|(xyz)/.test(“”)只有任意一个括号里面的内容完整了返回的才是true
- 正则边界(重点)
^会匹配行/字符串的起始位置(注:^在[]中才表示非!,这里表示开始)
$会匹配行/字符串的结尾位置
^$在一起就表示test(“”)里面的内容必须是这个(精确匹配),返回的结果才是true,其余的都是false
例如:
/^abc$/:表示的是以abc开头,以abc结尾