正则表达式的几种用法

636 阅读1分钟

一、定义

正则:专门用来处理字符串的技术

二、创造正则的两种方式

  1. 字面量 :let reg=/ werw/
  2. 构造函数:let reg=new RegExp

三、元字符(百度搜索 正则表达式)

  定义:双斜杠里边的东西,我们称之为元字符

四、语法

 1、`let str1="hduhellochdjakg"

  let reg1=/hello/;
  //test是正则类的原型上的方法

 console.log(reg1.text(str1))
 //使用正则reg1去匹配字符串str1,若str1能满足正则的规则,则返回true`
 
 
 2、检测里面有没有666     
 
 `let str4="fghjk666vbneks";

 let reg=/666/;`

1.量词元字符 (多用来捕获)

  ?* + {n} {n,} {n,m}:

  1)用在要修饰的字符后边,代表量词前边的那个字符可以出现的次数

  2) 

  • ()在匹配的时候可以提升优先级
  •    ^ 以什么开头

  •      $ 以什么结尾

    ` `let str="zzzzzz"
    
     let reg=/^zhufeng/ //z开头,后边是hufeng 
    
     let reg=/zhufeng$/ //g结尾,前边是hufeng 
    
     let reg=/^zhufeng$/ //z开头,g结尾中间是hufen`  `
    
  •       \  转义,把那些在正则当中有特殊含义的字符,转义成没有特殊含义的普通字符

    `  let  tt = "hello\"zhufeng\""
    
      //"hello"zhufeng"""   `
    
  •    . 代表了除了换行以外的任意字符 而检测时可以用.去表示

  • []代表单个字符的或

    • let reg=[/a-z///26个小写字母的任意一个,只能从前往后,不能从后往前(根据ASCII码)
      
    • [^a-z]除了小写字母以外的任意字符

    • [A-Za-z0-9] 大小写字母以及数字

  • | 代表或的意思

    ` let reg=/[xy]/;//等价于let reg=/x|y/  `
    
     
     `let reg=/(wang)|(yi)/;//wang或yi `
    

2. 修饰符

3.其他(普通的 和 特殊的)

4.\d表示一个数字字符

`let reg2=/\d/;//检测数字

 console.log(reg2.text(str1));`

5.\D 取非 除了数字以外的任意字符

`let str3="123456"

console.log(/\D/.test(str3))//false
`

6.\w 数字 字母 _

7.\W 取非

ep:元字符用法举例

1、 let reg1=/hello/

2、前面是q q后面是一到多个数字,再后边必须是hello 

`let reg2=/qd\d+hello/`
 

3、前面是q q后面是一个数字,或者啥也没有,再后边必须是hello 

`let reg2=/qd\d?hello/`

 

4、前面是q q后面要么啥也没有,要么就是一到多个数字,再后边必须是hello 

`let reg2=/qd\d*hello/ `

 

5、前边是q q后面只能是3个数字,再后边必须是hello

`letreg2=/q\d{3}hello/ ` 
 

6、前边是q q后面最少是3个数字,再后边必须是hello 

` let reg2=/q\d{3,}hello/`

7、前边是q q后面是3到5个数字,再后边必须是hello 

`let reg2=/q\d{3,5}hello/  `

8、前边是q q后面最多是10个数字,再后边必须是hello

`let reg2=/q\d{0,10}hello`

总:代码输出及语法

`let str="qd78hello";

 console.log(reg1.test(str));
 
 console.log(reg2.test(str)); 
 `

五、量词元字符具体示栗及白话翻译

1.里面有数字

`let reg1=/\d/`

2、\d(数字)出现0-1次 大白话 就是\d可有可无。返回结果都是true

`let reg2=/\d?/ `

3、数字出现一到多次

`let reg3=/\d+/ `

4、数字出现0到多次

`// let reg3=/\d*/`

5.{}的用法

  `let str="2ebdeuwbczhufengzhufengdhadb";
   
   let reg4=/zhufeng{1,}/ //代表g出现1-多次

   let reg4=/(zhufeng){1,}/;//()在匹配的的时候 可以提升优先级(把珠峰看作一个整体)

   console.log(reg4.test(str));`

6、

`let obj={};//字面量

 let obj2= new Object();//构造函数

 let reg=/qweqe/;`

六.转化成字符串

`let reg3=/o/

 let obj={

 q:"hello"

 }

let t_str=JSON.stringify(obj)//使用JSON的方法,把对象转化成字符串

console.log(reg1.text(t_str));`

综上所述:

  1. 手机号练习

要求:第二位必须是35789

写法一:

`let reg=/^1[35789]\d*9$/

写法二

`let reg=/^1[35789]\d{9}$/`

 //以1开头,第二位是35789中任意的一个,后边是9个数字结尾

2. 验证有效年龄端 18-65 可以分为:

18 19

20 59

60 65

 `let reg=/(1[89])|([2-5]\d)|(6[0-5])/`