正则表达式


正则表达式


 let regex = new RegExp()
 console.log('regex',regex);  /(?:)/
----------------------------------------------------

 let regex = new RegExp('hello','ig')
/* 正则实例对象, 第一个参数为检索的字符, 第二个参数是修饰符, 注意修饰符必须加''(不加为变量) ;
 *  i 为不区分大小写, g为全局匹配(匹配多个而不是只匹配第一个) 
 */ 
 let str = 'hello people hello world hello country hello army'
 console.log(str.replace(regex, '你好')); // 你好 people 你好 world 你好 country 你好 aramy
----------------------------------------------------

// 正则字面量
  let regex = /youSay/ig
// 正则字面量的修饰符位于最后面,i和g不分先后次序
  let str = 'youSay 天这么蓝 yousay 空气这么清新 YouSay 你真的好开心'
  console.log(str.replace(regex, '你说')) // 你说 天这么蓝 你说 空气这么清新 你说 你真的好开心
----------------------------------------------------

/* test 
 * 检索字符串中是否包含正则规定的内容,包含返回true,不包含返回false
 */
  let str = '五杀超神'
  let regex =  /五杀/
  console.log(regex.test(str)) // true
----------------------------------------------------

// exec
  let str =  'uiuiuiui'
  let regex =  /u/
  console.log(regex.exec(str)) // 返回一个数组, 似乎不能全局匹配,只会返回第一个
----------------------------------------------------

// 字符串和正则匹配 配合使用
  // 替换
  let str = '急急复急急,木兰当户织'
  let regex = /急急/g
  console.log(str.replace(regex, '唧唧'));
  
  // match
  // 返回匹配的字符,组成一个新数组
  let regex = /急/g
  console.log(str.match(regex)) //  ["急", "急", "急", "急"]

  // split 
  // 返回分隔后的数组
  let regex = /复/ 
  console.log(str.split(regex)) // ["急急", "急急,木兰当户织"]

  // serch
  // 返回正则匹配到的第一个字符的下标
  let regex = /复/
  console.log(str.search(regex)); // 2
/* 元字符
  * . 表示除换行符外的任意字符 ( \n为换行符 )
  * \ 表示转义字符
  */ 

   let regex = /./
   let str = '\n123'
   console.log(regex.test(str)) // true

   
   let str = '1215204550@qq.com'
   let regex = /\.c/
   console.log(regex.test(str)) // true


   // []匹配字符集中的任意字符
   let regex = /[0-9]/
   let str = 'abc'
   console.log(regex.test(str)) // false

   
   let regex = /[0-9a-z]/
   let str = '123zzz'
   console.log(regex.test(str)) // true
   
   // 密码
   let regex = /[0-9][0-9][0-9][0-9][0-9][0-9]/
   let str = '23456'
   console.log(regex.test(str)) // true
  
   // ^ 以什么开头
   let regex = /^[a-z]/
   let str = '123acc'
   console.log(regex.test(str)) // false

   // $ 以什么结尾
   let regex = /m$/
   let str = '1215204550@qq.com'
   console.log(regex.test(str)) // true

 
  // \d 匹配数字
  let regex = /\d\d\d/
  let str = '123'
  console.log(regex.test(str)) // true

  // \D 匹配非数字 (字母 + 字符)
  let regex = /\D\D\D/
  let str = 'A._'
  console.log(regex.test(str)) // true
  // \w 匹配字母、数字,下划线
  let regex = /\w\w\w\w\w\w/
  let str = 'qq_com'
  console.log(regex.test(str)) // true

  // \W 匹配非数字、字母,下划线
  let regex = /\W\W\W/
  let str = '@ -'
  console.log(regex.test(str)) // true
 
  // 匹配空白字符(空格)
  let regex = /\W\s\W/
  console.log(regex.test(str)) // true
  // \b 匹配单词边界
  let regex = /\b/g
  let str = 'hello for world'
  console.log(str.replace(regex, '你好')) // 你好hello你好 你好for你好 你好world你好
  
  // \B 匹配非单词边界
  let regex = /\B/g
  let str = 'hello for world'
  console.log(str.replace(regex, '你好')) // h你好e你好l你好l你好o f你好o你好r w你好o你好r你好l你好d
  // 正则量词
  // ? 匹配0个或1个
  let regex = /4?/
  let str = '123'
  console.log(regex.test(str)) // true

  // * 匹配0个或多个
  let regex = /a*/
  let str = 'aaaBaaaaaa'
  console.log(regex.exec(str)) // ["aaa", index: 0, input: "aaaBaaaaaa", groups: undefined]

  // + 匹配1个或多个
  let regex = /\d+/
  let str = '4567aaaaaaaaaaaaaa'
  console.log(str.replace(regex, 'hello')) // helloaaaaaaaaaaaaaa

  // {6} 六位  {2, 6} 最少两位, 最多六位
  let regex = /\d{11}/
  let phone = '17393845392'
  console.log(regex.test(phone)) // true

  
  // 其他
  // | 或
  let regex = /^http:\/\/www\.\w+(.com|.cn|.gov|.net)/
  let net = 'http://www.baidu.net'
  console.log(regex.test(net)) // true
  
  // ()分组
  let regex = /(\d{3})(\d{4})(\d{4})/
  let ipone = '17393845392'
  console.log(regex.test(ipone)) // true

  console.log(RegExp.$1) // 173
  console.log(RegExp.$2) // 9384
  console.log(RegExp.$3) // 5392
  // 替换
  console.log(ipone.replace(regex, '$1****$3')) // 173****5392
  
  // 邮箱正则
  let regex = /\d+(@qq.com|@163.com)/
  let mail = '1215204550@163.com'
  console.log(regex.test(mail))
  // $1 是分组,有几个分组,就有几个$几
  console.log(RegExp.$1) // @163.com
  
  // 密码六位
  let regex = /\d{6}/

  // 手机号
  let regex = /^1[3, 5, 7 ,8 , 9]\d{9}/

  /*
   * qq密码,必须有字母数字
   *  ***这样有一个缺点,就是字母必须在前!***
   */ 
  
  let regex = /[a-z]{2,6}[0-9]{6,10}/
  let password = 'wa124567'
  console.log(regex.test(password)) // true

文章作者: KarlFranz
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 reprint policy. If reproduced, please indicate source KarlFranz !
评论
  目录