正则表达式入门笔记

114 阅读2分钟
/pattern/flags正则表达式是一种用于模式匹配和搜索文本的工具。

正则表达式:

/pattern/ :由‘原义字符’和‘元字符’组成

元字符:预先定义好的在正则表达式中有特殊含义的非字母字符

数量限定符Quantifiers

  • ? 前面的字符出现次数 =1或=0
  • * 前面的字符出现次数 >=0
  • + 前面的字符出现次数 >=1
  • {n1,n2} 前面的字符出现次数为 n1~n2次,n2可以省略

分组 Group

  • () 将括号内的字符都作为限定对象,不然只限定一个字符

“或”运算 OR Operator

  • (a|b) 匹配 a 或 b
  • (ab)|(cd)匹配 ab 或 cd

字符集/类 Character Classes

  • [a-zA-Z]匹配所有字母
  • [^0-9] 匹配所有数字意外的字符
  • [abc] 匹配 abc 字符

其他元字符 Meta-characters

  • \d 所有数字,等于[0-9]
  • \D 所有非数字
  • \w 所有单词字符(英文、数字、下划线)
  • \W 所有非单词
  • \s 所有空白符(空格、换行符、tab)
  • \S 所有非空白符
  • \t:匹配一个水平制表符(一个tab键:四个空格)
  • \n:匹配一个换行符(newline)
  • \r:匹配一个回车符(carriage return)
  • . 任意字符(除了换行符)
  • ^ 匹配行首
  • $ 匹配行尾
  • \b:匹配一个零宽单词的边界,例如:/\babc\b/匹配"abc abcabc"中的"abc",/ly\b/匹配"possibly yesterday."中的"ly"
  • \B:匹配一个零宽非单词边界,如两个字母之间或两个空格之间

/flags:修饰符 (写在表达式/最末尾)

  • i 不区分大小写
  • g 全局查找所有匹配项
  • m 多行匹配

匹配模式

  • <.+>贪婪匹配,例如:<span><b>example</b></span>匹配了全部,正则表达式在匹配时会尽可能多地匹配,直到匹配失败,默认是贪婪模式。
  • <.+?>懒惰匹配,例如:<span><b>example</b></span>,让正则表达式尽可能少地匹配,即一旦匹配成功就不再继续往下,在量词后面加? 即可。

js 中的正则表达式 api

RegExp 对象

创建一个正则表达式对象

  1. 字面量
var reg = /ab+c/i;
  1. 构造函数
var reg = new RegExp("ab+c",'i');
var reg = new RegExp(/ab+c/, "i"); // 首个参数为常规字面量的构造函数

RegExp的常用方法

  • reg.exec(str) 在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null
  • reg.test(str) 如果正则表达式与指定的字符串匹配,返回true;否则false
  • ……

String的正则相关方法