正则表达式

测试正则表达式

test()正则对象方法,用于检测字符串是否符合该规则

1
2
regexObj.test(str)
//用来检测str文本是否符合正则表达式规范

边界符

用来提示字符所处的位置,主要有两个字符

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
let rg = /abc/;  //正则表达式里面不需要加引号,不管是数字型还是字符串型
// /abc/ 只要包含abc这个字符串返回的都是true
console.log(rg.test('abcd'));
console.log(rg.test('aabcd'));
let reg = /^abc/;
// /^abc/必须以abc字符串开头
console.log(reg.test('abcd')); //true
console.log(reg.test('aabcd')); //false
let reg1 = /^abc$/;
// 精准匹配,要求必须是abc字符串才符合规范
console.log(reg1.test('abc')); //true
console.log(reg1.test('aabcd')); //false
console.log(reg1.test('abcabc')) //false

字符类

[]表示有一系列字符可供选择,只要匹配其中一个即可

1
2
3
4
5
6
7
8
9
let rg = /[abc]/;   //只要包含a或b或c都返回true
console.log(rg.test('andy')); //true
console.log(rg.test('boy')); //true
let rg1 = /^[abc]$/;//三选一 只有是a或b或c这三个字母才返回true
console.log(rg1.test('aa')); //false
console.log(rg1.test('b')); //true
let reg = /^[a-z]$/;//26个英文字母任何一个字母都返回true
console.log(reg.test('z')); //true
console.log(reg.test('a')); //true

如果==中括号==里面有^表示取反的意思

1
2
3
4
let reg2 = /^[^a-zA-Z0-9_-]$/;
console.log(reg2.test('a')); //false
console.log(reg2.test('!')); //true
console.log(reg2.test('-')); //false

量词符

用来设定某个模式出现的次数

符号 说明
* 相当于>=0 可以出现0次或多次
+ 相当于>=1 可以出现1次或很多次
相当于 1||0
{3 } 就是出现3次
{3,} 大于等于3次
{3,16} 大于等于3 并且小于等于16
1
2
3
let reg = /^[a-zA-Z0-9_-]{6,16}$/;
//用户只能输入英文字母 数字 下划线 短横线
//{6,16}中间不要有空格

预定义类

预定义类指的是某些常见模式的简写方式

预定义类 说明
\d 匹配0-9之间的==任意一个==数字,相当于[0-9]
\D 匹配所有0-9以外的字符
\w 匹配任意的字母、数字、下划线,相当于[A-Za-z0-9_-]
\W 匹配除所有字母、数字、下划线以外的字符
\s 匹配空格(包括换行符、制表符、空格)
\S 匹配非空格的字符

正则表达式参数

/表达式/[switch]

switch(也称为修饰符)按照什么样的模式来匹配,有三种值

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

replace替换

replace()方法可以实现替换字符串操作,用来替换的参数可以是一个字符串或者是一个正则表达式

stringObject.replace(regexp/substr,replacement)

  1. 第一个参数:被替换的字符串或者正则表达式
  2. 第二个参数:替换为的字符串
  3. 返回值是一个替换完毕的新字符串