当前位置:   article > 正文

正则表达式详细使用教程

正则表达式详细使用教程

正则是用于匹配字符串中字符组合的模式,在js中,正则也是对象。

定义正则的两种方式:

1.const 变量名=new RegExp(/表达式/)

  1. <script>
  2. const req = new RegExp(/a/)
  3. console.log(req.test("asd"))//true
  4. </script>

2.const 变量名=/表达式/

  1. const req = /前端/
  2. console.log(req.test("学习前端"))//true

test()是正则对象方法,用于检测字符串是否符合正则规范,该对象会返回true或false,其()内是想要测试的参数

3.边界符^ $,前者代表开始,后者代表结束

  1. <script>
  2. //^代表以a开头
  3. const req = /^a/
  4. console.log(req.test("a"));//true
  5. console.log(req.test("abc"));//true
  6. console.log(req.test("bac"));//false
  7. //$代表以a结尾
  8. const req1 = /a$/
  9. console.log(req1.test("a"));//true
  10. console.log(req1.test("bca"));//true
  11. console.log(req1.test("bac"));//false
  12. // 正则不需要加引号,无论数字或字符,^ $这样写代表精确匹配,必须是abc才符合规范,否则为false
  13. const req = /^abc$/
  14. console.log(req.test("abc"));//true
  15. console.log(req.test("abcd"));//false
  16. console.log(req.test("aabcd"));//false
  17. //单词边界,找出某句话的某个单词,例如:The cat scattered his food all over the room.想找到cat这个单词,但是如果只是使用/cat/这个正则,就会同时匹配到cat和scattered这两处文本,这时候就可以用到单词边界\b,他其实匹配的是能构成单词的字符(\w)和不能构成单词的字符(\W)中间的那个位置,也就是cat前后空隙.
  18. const req = /\bcat\b/g
  19. const str = 'The cat scattered his food all over the room'
  20. console.log(str.replace(req, 'dog'));//The dog scattered his food all over the room
  21. </script>

4.i:匹配大小写

  1. <script>
  2. // i:忽略大小写
  3. const req = /a/i
  4. console.log(req.test("a"));//true
  5. console.log(req.test("abc"));//true
  6. console.log(req.test("ABC"));//true
  7. </script>

5.g:全局匹配

  1. <script>
  2. const req = /js/
  3. const str = '学js,找js工作,成js大神'
  4. console.log(str.replace(req, "前端"));//学前端,找js工作,成js大神
  5. const req1 = /js/g
  6. const str1 = '学js,找js工作,成js大神'
  7. console.log(str1.replace(req1, "前端"));//学前端,找前端工作,成前端大神
  8. </script>

6.字符类[]

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

^:取反,注意要写到[]里

.:匹配的是除换行符之外的任意字符,''特殊也为false

  1. <script>
  2. //1.只要匹配一个就符合规则
  3. const req = /[abc]/
  4. console.log(req.test("abcd"));//true
  5. console.log(req.test("andy"));//true
  6. //2.三选一,不含其他元素
  7. const req1 = /^[abc]$/
  8. console.log(req1.test("abc"));//false
  9. console.log(req1.test("andy"));//false
  10. console.log(req1.test("a"));//true
  11. //[]的^表示全取反,就是取abc之外的
  12. const req = /[^abc]/
  13. console.log(req.test("a"));//false
  14. console.log(req.test("d"));//true
  15. //.匹配的是除换行符之外的任意字符,''特殊也为false
  16. const req = /./
  17. console.log(req.test(''));//false
  18. console.log(req.test("1"));//true
  19. console.log(req.test("aaa"));//true
  20. console.log(req.test("\n"));//false
  21. console.log(req.test("\r"));//false
  22. </script>

7.量词符

  1. <script>
  2. //*号使用
  3. const req = /^a*$/
  4. console.log(req.test(""));//true
  5. console.log(req.test("a"));//true
  6. console.log(req.test("aaaa"));//true
  7. //+号使用
  8. const req1 = /^a+$/
  9. console.log(req1.test(""));//false
  10. console.log(req1.test("a"));//true
  11. console.log(req1.test("aaaa"));//true
  12. //?号使用
  13. const req3 = /^a?$/
  14. console.log(req3.test(""));//true
  15. console.log(req3.test("a"));//true
  16. console.log(req3.test("aaaa"));//false
  17. //{n}使用
  18. const req4 = /^a{3}$/
  19. console.log(req4.test("aaa"));//true
  20. console.log(req4.test("aaaa"));//false
  21. //{n,}使用
  22. const req5 = /^a{3,}$/
  23. console.log(req5.test("aaa"));//true
  24. console.log(req5.test("aaaa"));//true
  25. //{n,m}使用
  26. const req6 = /^a{3,5}$/
  27. console.log(req6.test("aaa"));//true
  28. console.log(req6.test("aaaa"));//true
  29. console.log(req6.test("aaaaa"));//true
  30. console.log(req6.test("aaaaaa"));//false
  31. </script>

8.预定义类(简便写法,不做赘述)

9.分组及分组捕获、分支结构

  1. //分组
  2. let req = /(ab)+/ //匹配ab类型的
  3. console.log(req.test('ab'));//true
  4. console.log(req.test('abab'));//true
  5. //分组捕获 例如将YYYY-MM-DD格式替换为MM/DD/YYYY,使用()将\d{4}等分组
  6. let req1 = /^(\d{4})-(\d{2})-(\d{2})$/
  7. let date = '2024-02-25'
  8. console.log(req1.test(date)); //true
  9. //如何获取分组对应内容,使用$,$1代表第一块内容YYYY
  10. console.log(date.replace(req1, '$2/$3/$1'));//02/25/2024
  11. //分支结构
  12. let str = '学前端内容'
  13. let str1 = '学后端知识'
  14. let str2 = '学正则方法'
  15. let req3 = /前端|正则/
  16. console.log(req3.test(str));//true
  17. console.log(req3.test(str1));//false
  18. console.log(req3.test(str2));//true

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号