一,全文属性

  • g 表示全文匹配
  • i 表示匹配时忽略大小写
  • m 表示多行匹配

二、()、[]、{} 的区别

  • ( ) 的作用是提取匹配的字符串。表达式中有几个()就会得到几个相应的匹配字符串。比如 (\s+) 表示连续空格的字符串。
  • [ ] 是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示字符文本要匹配英文字符和数字。
  • { } 一般用来表示匹配的长度,比如 \d{3} 表示匹配三个空格,\d[1,3]表示匹配1~3个空格。

三、^ 和 $

  • ^ 匹配一个字符串的开头,比如 (^a) 就是匹配以字母a开头的字符串
  • $ 匹配一个字符串的结尾,比如 (b$) 就是匹配以字母b结尾的字符串
  • ^ 还有另个一个作用就是取反,比如[^xyz] 表示匹配的字符串不包含xyz
    (如果^出现在[ ]中一般表示取反,而出现在其他地方则是匹配字符串的开头)

javascript split正则拆分 js正则replace_正则

四、\d \s \w .

  • \d 匹配一个非负整数, 等价于 [0-9]
  • \s 匹配一个空白字符
  • \w 匹配一个英文字母或数字,等价于[0-9a-zA-Z]
  • 匹配除换行符以外的任意字符,等价于[^\n]

*五、 + ?

  • 表示匹配前面元素0次或多次,比如 (\s*) 就是匹配0个或多个空格
  • 表示匹配前面元素1次或多次,比如 (\d+) 就是匹配由至少1个整数组成的字符串
  • ? 表示匹配前面元素0次或1次,相当于{0,1} ,比如(\w?) 就是匹配最多由1个字母或数字组成的字符串

六、test 、match

前面的大都是JS正则表达式的语法,而test则是用来检测字符串是否匹配某一个正则表达式,如果匹配就会返回true,反之则返回false

/\d+/.test("123") ; //true
 
/\d+/.test("abc") ; //false

match是获取正则匹配到的结果,以数组的形式返回

“186a619b28”.match(/\d+/g); // [“186”,“619”,“28”]

replace

var newStr = str.replace(regexp|substr, newSubStr|function)

第1个参数可以是一个普通的字符串或是一个正则表达式

第2个参数可以是一个普通的字符串或是一个回调函数

如果第1个参数是RegExp, JS会先提取RegExp匹配出的结果,然后用第2个参数逐一替换匹配出的结果

如果第2个参数是回调函数,每匹配到一个结果就回调一次,每次回调都会传递以下参数:

result: 本次匹配到的结果
 
$1,...$9: 正则表达式中有几个(),就会传递几个参数,$1~$9分别代表本次匹配中每个()提取的结果,最多9个
 
offset:记录本次匹配的开始位置
 
source:接受匹配的原始字符串

例子:1简单的字符串替换

let str = 'hello world';
let str1 = str.replace('hello', 'new');
console.log(str1) //new world
console.log(str) //hello world

2.正则替换,正则全局匹配需要加上g,否则只会匹配第一个

let str = 'hello world';
let str2 = str.replace(/o/,'wyx');
let str3 = str.replace(/o/g,'wyx');
console.log(str2) //hellwyx world
console.log(str3) //hellwyx wyxlrld

3$’:表示匹配字符串右边的文本

let str = 'hello world';
let str4 = str.replace(/hello/g, "$'");
let str5 = str.replace(/o/g, "$'");
console.log(str4) // world world
console.log(str5) //hell world wrldrld

4 $`(tab键上方的字符):表示匹配字符串文本左边的文本

let str = 'hello world';
let str6 = str.replace(/world/,"$`");
console.log(str6) //hello hello

5$$ : 表示插入一个$

let str = '¥2000.00';
let str7 = str.replace(/¥/,"$$");
console.log(str7) //$2000.00

6当第二个参数是函数时,将所有单词首字母改为大写

let str = 'please make heath your first proprity';
str1 = str.replace(/\b\w+\b/g, function (word) {
    console.log('匹配正则的参数',word);
    return word[0].toUpperCase() + word.slice(1);
});
console.log(str1); //Please Make Heath Your First Proprity

7我们将把 “Doe, John” 转换为 “John Doe” 的形式:

name = "Doe, John";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");