JavaScript--正则

230 阅读1分钟

正则--要什么写什么

例如:从一个字符串里找到a

let str = 'asfaf1232'
let re = /a/
str.search(re)

正则主要是学习转义、元字符、量词、选项

元字符 []

[]代表一个范围,这个范围只占一个位置
有三大种:

  • 任选一个
    • [abac123]
    • 在这个位置上,可以是a、b、c、1、2、3
    • 只能是一个
    • 例如:/a[abc]c/
    • 可以匹配:aac、abc、acc
  • 范围
    • [0-9]
    • [a-z]
    • [0-9a-z]
  • 排除
    • [^345] 除了3、4、5之外的都可以
    • [^0-9] 排除数字
    • [^a-z] 排除所有字母
    • [^0-9a-z] 排除所有数字字母 【简单实例】:识别是否是QQ号
// 分析
// 5~11位数字
// 第一位1-9

// qq号
let str = "5123123"
let re = /^[1-9]\d{4,10}$/

// 测试正则是否正确
re.test(str) // true

选项

  • g
    • 全家搜索所有
  • i
    • 忽略大小写

转义

  • \d
    • 代表所有数字
    • [0-9]

量词

指代位置范围
量词放在后面
()在正则里,意思是分组

  • {n}
    • 确切的某个值
    • a{5} aaaaa
    • (ab){5} ababababab
  • {n,m}
    • 某个范围
    • a{3,8} 3-8个a
  • {n,}
    • 最少n个,最多无限
    • a{4,} 最少4个a
  • {,m}
    • 最少0个,最多m个
    • a{,4} 最少0个a,最多4个

正则方法

  • str.search(re)
    • 搜索正则匹配到的结果第一次出现的位置
    • 找到,返回数字1,没找到,返回-1
  • str.match(re)
    • 返回一个数组
    • 一般会加g,不然只会返回匹配到的第一个
  • re.test(str)
    • 返回一个布尔值
    • 有个小毛病,就是会找字符串中有没有要求的那一部分,有就返回true
    • 如果是要验证整个字符串是否符合要求,一般会加上^ $