描述

  1. 正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象
  2. 通常用来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式。

使用场景

  1. 正则表达式在 JavaScript中的使用场景:
  2. 例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文(匹配)
  3. 比如用户名: /[1]{3,16}$/
  4. 过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等

语法

test()方法

  1. 用来查看正则表达式与指定的字符串是否匹配
  2. 如果成功返回true,否则返回false
  1. // 自己搞的正则表达式
  2. const str = "我爱喝牛奶";
  3. const reg = /牛奶/;
  4. const reg1 = /番茄/;
  5. console.log(reg.test(str)); //true
  6. console.log(reg1.test(str)); //false

exec() 方法

  1. 在一个指定字符串中执行一个搜索匹配
  2. 如果匹配成功返回一个数组,否则返回null

元字符

  1. 是一些具有特殊含义的字符,可以极大提高了灵活性和强大的匹配功能。
  2. 比如,规定用户只能输入英文26个英文字母,普通字符的话 abcdefghijklm…..
    但是换成元字符写法: [a-z]

3.为了方便记忆和学习,我们对众多的元字符进行了分类:

  • 边界符(表示位置,开头和结尾,必须用什么开头,用什么结尾)
  • 量词(修饰符) (表示重复次数)
  • 字符类(占位符) (比如 \d 表示 0~9)

普通字符

  1. 大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字。
    也就是说普通字符只能够匹配字符串中与它们相同的字符。

元字符(特殊字符)

边界符

  1. 正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符
  2. 开头 ^
  3. 结尾 $
  4. 如果 ^ 和 $ 在一起,表示必须是精确匹配。
  5. 正则表达式 - 图1
  1. const str = '快乐女孩';
  2. // 1.
  3. // const reg = /^快乐/;
  4. // alert(reg.test(str)) //true
  5. // 2.
  6. // const reg = /^快乐女孩$/;
  7. // alert(reg.test(str)) //true
  8. // 3.
  9. // const reg = /女孩$/;
  10. // alert(reg.test(str)) //true
  11. // 4.
  12. // const reg = /^快乐$/;
  13. // alert(reg.test(str)) //false
  14. // 5.
  15. // const reg = /^快孩$/;
  16. // alert(reg.test(str)) //false
  17. // 6.
  18. // const reg = /悲伤女孩$/;
  19. // alert(reg.test(str)) //false
  20. // 7.
  21. // const reg = /^快乐男孩$/;
  22. // alert(reg.test(str)) //false

量词

  1. 量词用来 设定某个模式出现的次数
  2. 注意: 逗号左右两侧千万不要出现空格

正则表达式 - 图2

  1. // const str="路飞";
  2. // const reg=/路飞/;
  3. // console.log(reg.test(str));
  4. // * 表示 放在它前面那一个字符 可以出现0次或者多次
  5. // /^路*$/ => "", 路,路路,路路路
  6. // console.log(/^路*$/.test('')); // true
  7. // console.log(/^路*$/.test('路')); // true
  8. // console.log(/^路*$/.test('路路')); // true
  9. // console.log(/^路*$/.test('路路路')); // true
  10. // + 表示 放在它前面那一个字符 可以出现1次或者多次
  11. // console.log(/^路+$/.test(''));
  12. // console.log(/^路+$/.test('路'));
  13. // console.log(/^路+$/.test('路路'));
  14. // console.log(/^路+$/.test('路路路'));
  15. // ? 表示出现0次或者1次
  16. // console.log(/^路?$/.test(''));// true
  17. // console.log(/^路?$/.test('路')); // true
  18. // console.log(/^路?$/.test('路路')); // false
  19. // console.log(/^路?$/.test('路路路')); // false
  20. // {n} 放在它前面的那一个字符 出现n次
  21. // console.log(/^路{2}$/.test('')); // false
  22. // console.log(/^路{2}$/.test('路')); // false
  23. // console.log(/^路{2}$/.test('路路')); // true
  24. // console.log(/^路{2}$/.test('路路路')); // false
  25. // {n,} 放在它前面的字符 最少出现n次
  26. // console.log(/^路{2,}$/.test('')); // true
  27. // console.log(/^路{2,}$/.test('路')); // true
  28. // console.log(/^路{2,}$/.test('路路'));// true
  29. // console.log(/^路{2,}$/.test('路路路')); // true
  30. // {n,m} 放在它前面的字符 最少出现n次,最大是m次
  31. console.log(/^路{0,2}$/.test('')); // true
  32. console.log(/^路{0,2}$/.test('路')); // true
  33. console.log(/^路{0,2}$/.test('路路')); // true
  34. console.log(/^路{0,2}$/.test('路路路')); // false

字符类

正则表达式 - 图3

正则表达式 - 图4

  • 匹配字符集合
  1. 后面的字符串只要包含 abc 中任意一个字符,都返回 true 。
  • 里面加上 - 连字符
  1. l使用连字符 - 表示一个范围
    正则表达式 - 图5

正则表达式 - 图6

  • 里面加上 ^ 取反符号
  1. [^a-z] 匹配除了小写字母以外的字符
    注意要写到中括号里面
  2. . 匹配除换行符之外的任何单个字符

修饰符

  1. 修饰符约束正则执行的某些细节行为,如是否区分大小写、是否支持多行匹配等

正则表达式 - 图7

i 是单词 ignore 的缩写,正则匹配时字母不区分大小写

g 是单词 global 的缩写,匹配所有满足正则表达式的结果

正则表达式 - 图8

replace 替换

正则表达式 - 图9


  1. a-z0-9_- ↩︎