文章目录
正则表达式:使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
一、基础篇
1.1 支持正则表达式的方法
1.1.1 search()
search
方法可使用字符串作为参数。字符串参数会转换为正则表达式,并显示匹配的起始位置。
var str = "Visit Runoob!";
var n = str.search("Runoob"); // 6
1.1.2 replace()
使用正则表达式且不区分大小写将字符串中的 Microsoft
替换为 Runoob
:
var str = 'Visit Microsoft!';
var txt = .replace(/microsoft/i,"Runoob"); // Visit Runoob!
1.1.3 match()
match()
方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
- 如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。
- 如果没有找到任何匹配的文本, match() 将返回 null。
- 否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。
var str="The rain in SPAIN stays mainly in the plain";
var n=str.match(/ain/g); // ain,ain,ain
1.1.4 test()
test()
方法用于检测一个字符串是否匹配某个模式.
var str="Hello world!";
var patt=/Hello/g; //查找"Hello"
var result=patt.test(str); // true
1.1.5 exec()
exec()
方法用于检索字符串中的正则表达式的匹配。- 该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
/e/.exec("The best things in life are free!"); // e
1.2 正则表达式修饰符
i
执行对大小写不敏感的匹配。g
执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。m
执行多行匹配。
1.3 正则表达式模式
方括号用于查找某个范围内的字符:
[abc]
查找方括号之间的任何字符。[^abc]
查找任何不在方括号之间的字符。[0-9]
查找任何从 0 至 9 的数字。[a-z]
查找任何从小写 a 到小写 z 的字符。[A-Z]
查找任何从大写 A 到大写 Z 的字符。[A-z]
查找任何从大写 A 到小写 z 的字符。[adgk]
查找给定集合内的任何字符。[^adgk]
查找给定集合外的任何字符。(red|blue|green)
查找任何指定的选项。
元字符是拥有特殊含义的字符:
.
查找单个字符,除了换行和行结束符。\w
查找数字、字母及下划线。\W
查找非单词字符。\d
查找数字。\D
查找非数字字符。\s
查找空白字符。\S
查找非空白字符。\b
匹配单词边界。\B
匹配非单词边界。\0
查找 NULL 字符。\n
查找换行符。\f
查找换页符。\r
查找回车符。\t
查找制表符。\v
查找垂直制表符。\xxx
查找以八进制数 xxx 规定的字符。\xdd
查找以十六进制数 dd 规定的字符。\uxxxx
查找以十六进制数 xxxx 规定的 Unicode 字符。
量词:
n+
匹配任何包含至少一个 n 的字符串。n*
匹配任何包含零个或多个 n 的字符串。n?
匹配任何包含零个或一个 n 的字符串。n{X}
匹配包含 X 个 n 的序列的字符串。n{X,}
X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。n{X,Y}
X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。n$
匹配任何结尾为 n 的字符串。^n
匹配任何开头为 n 的字符串。?=n
匹配任何其后紧接指定字符串 n 的字符串。?!n
匹配任何其后没有紧接指定字符串 n 的字符串。?!^
忽略开头的字符
二、面试篇
2.1 数字价格千分位分割
第一种,只可区分整数
'123456789'.replace(/(?!^)(?=(\d{3})+$)/g, ',') // 123,456,789
第二种,只可区分带小数的
'112354356346123.214462456'.replace(/(\d)(?=(\d{3})+\.)/g, '$1,')