正则表达式温习

正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)。模式描述在搜索文本时要匹配的一个或多个字符串。

正则创建方式有

var re = new RegExp("\s+");

在使用构造函数创建正则对象时,需要加转义字符(反斜杠\)或者以下列方式创建

var re = /\s+/;

 

修饰符

i  执行对大小不敏感的匹配

g 执行全局匹配(查找完所有匹配字符)

m 执行多行匹配

 

方括号

[123]     查找方括号里的任何字符

[^abc]    查找任何不在方括号里的字符

[0-9]      查找从0到9之间包括0,9的数字

[a-z]       查找从小写a到小写z之间的字符包括a,z

[A-Z]      查找从大写A到大写Z之间的字符包括A,Z

[adfrt]     查找给定集合内的所有字符

[^adfrt]    查找给定集合外的所有字符

(x|y)   查找任何指定的选项

 

元字符

元字符使用有特殊含义的字符

       查找单个字符,除了换行和行结束符   

例:var str = "abcd" 

console.log(str.macth(/.+/))       // ["abcd", index: 0, input: "abcd"]; +表示匹配不止一个

\w      查找单词字符

例: var str = "abcd123我的你的" 

console.log(str.match(/\w+/))     //["abcd123", index: 0, input: "abcd123我的你的"]

\W      查找非单词字符

例:var str = "abcd123我的你的" 

 

console.log(str.match(/\W+/))    //["我的你的", index: 7, input: "abcd123我的你的"]

\d       查找数字

例:var str = "abcd123我的你的" 

console.log(str.match(/\d+/))    //["123", index: 4, input: "abcd123我的你的"]

\D     查找非数字字符

例:var str = "A;{1r!abcd123我的你的" 

console.log(str.match(/\D+/))     //["A;{", index: 0, input: "A;{1r!abcd123我的你的"]

如果要全部查找出来需要加上g修饰符

console.log(str.match(/\D+/g))     //["A;{", "r!abcd", "我的你的"]

\s    查找空白字符

例: var str="12 34 567 " 

console.log(str.match(/\s+/))     //[" ", index: 2, input: "12 34 567 "]

\S    查找非空白字符

例: var str="12 34 567 " 

console.log(str.match(/\S+/))     //["12", index: 0, input: "12 34 567 "]

\b   匹配单词边界 (单词:都是指由\w即[a-zA-Z0-9_]组成的字符串,单词边界:那就是每个字符之间以及字符串首尾)

例: var str="aaa 12 34567"

console.log(str.replace(/\b/g,"……"))      //……aaa…… ……12…… ……34567……

省略号(……)出现的位置即我们说的单词边界

\B     匹配非单词边界

例: var str="aaa 12 34567"

console.log(str.replace(/\B/g,"……"))  //a……a……a 1……2 3……4……5……6……7

省略号(……)出现的位置即我们说的非单词边界

\0     查找NULL字符 (NUL字符通常以转义序列'\0'表示。声明正则表达式是/\0/的时候,'\0'会匹配成功。)

例: var reg=/\0/;
reg.test('\0');  //true
reg.test('');   //false
reg.test(' ');  //false

并且 空白符和空字符是不一样的空字符为\0,空白符为[ \t\n\x0B\f\r] , \0代表查找NULL字符

\n     查找换行符

例:var str = `123

4567`;
console.log(str.match(/\n/))   // ["↵", index: 3, input: "123↵4567"]

\f              查找换页符。

\r             查找回车符。

\t             查找制表符。

\v            查找垂直制表符。

\xxx        查找以八进制数 xxx 规定的字符。

\xdd        查找以十六进制数 dd 规定的字符。

\uxxxx    查找以十六进制数 xxxx 规定的 Unicode 字符。

 

量词

n+        匹配任何包含至少一个n的字符串

例如:/a+/ 匹配"candy"z中的"a","caaaaaaaaandy"中的所有"a";

n*        匹配任何包含零个或多个n的字符串

例如:/bo*/匹配"A ghost boooed" 中的"booo","A bird warbled"中的"b",但是不匹配"A goat grunted"

n?       匹配任何包含零个或者一个n的字符串

 例如:/e?le?/ 匹配 "angel" 中的 "el","angle" 中的 "le"。

n{X}    匹配包含 X 个 n 的序列的字符串

 例如:/a{2}/ 不匹配 "candy," 中的 "a",但是匹配 "caandy," 中的两个 "a",且匹配 "caaandy." 中的前两个 "a"。

n{X,}    X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配

例如:/a{2,}/ 不匹配 "candy" 中的 "a",但是匹配 "caandy" 和 "caaaaaaandy." 中所有的 "a"。

n{X,Y}   X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。

例如:/a{1,3}/ 不匹配 "cndy",匹配 "candy," 中的 "a","caandy," 中的两个 "a",匹配 "caaaaaaandy" 中的前面三个 "a"。注意,当匹配 "caaaaaaandy" 时,即使原始字符串拥有更多的 "a",匹配项也是 "aaa"。

n$         匹配任何结尾为 n 的字符串。

例如: 

var str = "angeelnel";

console.log(str.match(/el$/))   //["el"]

^n      匹配任何开头为 n 的字符串。

例如: 

var str = "angeelnel";

console.log(str.match(/^an/))   //["an", index: 0, input: "angeelnel"]

?=n      匹配任何其后紧接指定字符串 n 的字符串。

例如: 

var str="ange elnel";

console.log(str.match(/ge(?=el)/))    //["ge"]   如果不是就会返回null

 

?! = n     匹配任何其后没有紧接指定字符串 n 的字符串。

var str="Is this all there is";
var patt1=/is(?! all)/gi;

posted @ 2019-04-16 18:07  柒夏  阅读(99)  评论(0)    收藏  举报