1 - 转义符号与字符、正则基础、修饰元字符

208 阅读3分钟

一、知识点

1. 元字符 正则使用的转义字符

元字符描述
.匹配除了回车和换行的所有字符
\w查找单词字符 [0-9A-z_]
\W查找非单词字符 [^\w]
\d查找数字 [0-9]
\D查找非数字字符 [^\d]
\s查找空白字符 [\r\n\t\v\f]
\S查找非空白字符 [^\s]
\b匹配单词边界
\B匹配非单词边界
\0查找 NUL字符
\n查找换行符
\f查找换页符
\r查找回车符
\t查找制表符 tab(4个空格)
\v查找垂直制表符
\xxx查找以八进制数 xxxx 规定的字符
\xdd查找以十六进制数 dd 规定的字符
\uxxxx查找以十六进制 xxxx规定的 Unicode 字符

2. gim修饰符 正则属性

  1. i:ignore case 忽略大小写
  2. g:global 全局匹配
  3. m:multi-line 多行匹配

4. 表达式 []

  1. [abc]:查找方括号内任意一个字符。
  2. [^abc]:查找不在方括号内的字符。
  3. [0-9]:查找从 0 至 9 范围内的数字,即查找数字。
  4. [a-z]:查找从小写 a 到小写 z 范围内的字符,即查找小写字母。
  5. [A-Z]:查找从大写 A 到大写 Z 范围内的字符,即查找大写字母。
  6. [A-z]:查找从大写 A 到小写 z 范围内的字符,即所有大小写的字母。
  7. [a-zA-Z] = [a-Z]
  8. [0-9A-Za-z] = [0-9A-z] = [0-z] = [0-Z]
  9. 表达式内部:^:非,|:或

二、正则基础

1. 全局匹配、忽略大小写,包含Test

var reg = new RegExp('Test', 'gi'),
    str = 'This is a test.Test is important.';
console.log(str.match(reg)); // ["test", "Test"]

2. 全局匹配、忽略大小写、多行匹配,以Test开头的数据

var reg = /^Test/gim, // 等价于:new RegExp('^Test', 'gim')
    str = 'This is a test.\nTest is important.';
console.log(str.match(reg)); // ["Test"]

3. 正则表达式里面如果包含变量只能使用new RegExp()的方式

var v = 'Test';
var str = 'This is a test';
var reg = /v/gi;
var reg1 = new RegExp('Test', 'gi');
console.log(str.match(reg)); //null
console.log(str.match(reg1)); // ["test"]

4. new的过程是拷贝对象的过程,不new是拿引用的过程

var reg = /test/;
//加new是实例化了新的正则对象,跟reg是不一样的;不加new是复制了reg的引用,两者一样;
var newReg = new RegExp(reg);
console.log(reg, newReg); // /test/ /test/
console.log(reg == newReg); // false
reg.a = 1;
console.log('newReg.a', newReg.a); // undefined

5. 表达式 []

  1. [a-zA-Z] = [a-Z]
var reg = /[wx][xy][z]/,
    str = 'wxyz';
console.log(str.match(reg)); // ['xyz']
  1. [0-9A-Za-z] = [0-9A-z] = [0-z] = [0-Z]
var str = "jhjdfkkdlgDhhkEKJKLLOl119431;oo",
    reg = /[0-Z][A-Z][a-z]/g;
console.log(str.match(reg)); // ["LOl"]
  1. 表达式内部:^:非,|:或
var str = "234jhjdfkkdlgDhhkEKJKLLOl123431;oo",
    reg = /[^0][A-Z][a-z]/g, //[^0]--非0
    reg1 = /123|234/g,
    reg2 = /(123|234)[t]/g,
    reg3 = /(123|234)[j]/g;
console.log(str.match(reg)); //["gDh", "LOl"]
console.log(str.match(reg1)); //["234", "123"]
console.log(str.match(reg2)); //null
console.log(str.match(reg3)); //["234j"]

6. 元字符元字符 正则使用的转义字符

  1. \w === [0-9A-z_];
  2. \W === [^\w];
  3. \d === [0-9];
  4. \D === [^\d];
  5. \s === [\r\n\t\v\f]; \r:回车符,\n:换行符,\t:制表符 tab(4个空格),\v:垂直换行符,\f:换页符
  6. \S === [^\s];
  7. \b 单词边界
  8. \B 非单词边界
  9. . 可以匹配除了回车和换行的所有字符
// \w、\W
var reg = /\wab/g,
    str = '234abc_ab%&';
console.log(str.match(reg)); //["4ab", "_ab"]

var reg = /[\W][\W][\W]/g,
    str = '234%abc-%&';
console.log(str.match(reg)); //["-%&"]
// \d、\D
var reg = /\Dab/g,
    str = '234eabc-%&';
console.log(str.match(reg)); //["eab"]

var reg = /\d\D/g,
    str = '0GF34ojkkk-22gg';
console.log(str.match(reg)); // ["0G", "4o", "2g"]
// \S、\S
var reg = /\sab/g,
    str = '23\fab-&%';
console.log(str.match(reg)); //["ab"]
// \b、\B
var reg = /\Bhis\b/g,
    str = 'This is a Test';
console.log(str.match(reg)); // ["his"]
// .
var reg = /./g,
    str = 'This\ris\na\ttest $%#';
console.log(str.match(reg)); // ["T", "h", "i", "s", "i", "s", "a", "	", "t", "e", "s", "t", " ", "$", "%", "#"]
// \w、\W 、\d、\D、\S、\S
var reg = /[\w\W][\d\D][\s\S]/g,
    str = 'abcdefg';
console.log(str.match(reg)); // ["abc", "def"]