js中正则表达式,是处理字符优先考虑用的,从三个部分来讲分别是语法、js函数、常用例子,组成正则三部曲。
\:转义字符。'\\n'匹配\n
^:开始位置。'^[0-9]'匹配以数字开头的字符,可以匹配'88DC',不可匹配'DC88'
$:结束位置。'[0-9]$'匹配以数字结尾的字符,可以匹配'ab12',不可以匹配'12ab'
*:匹配前面的子表达式任意次。'abcd*'匹配带有abc加任意个d的字符,可以匹配'hi abc'、'hi abcddddd',不可以匹配'hi ab'
+:匹配前面的子表达式一次或多次。'abcd+'匹配带有abc加一个以上d的字符,匹配'abcddd**abcd**abc',得出["abcddd", "abcd"]
?:匹配前面的子表达式零次或一次。'abcd+'匹配带有abc加零个或一个d的字符,匹配'abcddd**abcd**abc',得出["abcd", "abcd", "abc"]
{n}:n是非负整数,匹配n次。'zoo{2}'匹配带有zo加两个'oo'的字符,匹配'zooooo',得出["zooo"]
{n,}:n是非负整数,至少匹配n次。'zoo{2,}'匹配带有zo加两个'oo'的字符,匹配'zooooo',得出["zooooo"]
{n,m}:n和m非负整数,n<=m,匹配至少n,最多m次。'fo{2,4}d'匹配f和d之间2~4个o,可以匹配'fooood',得出["fooood"]
x|y:匹配x或y。例如,“z|food”能匹配“z”或“food”(此处请谨慎)。“(z|f)ood”则匹配“zood”或“food”。
[xyz]:字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[^xyz]:负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”。
[a-z]:字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
[^a-z]:负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。
\b:匹配一个单词边界,也就是指单词和空格间的位置(即正则表达式的“匹配”有两种概念,一种是匹配字符,一种是匹配位置,这里的\b就是匹配位置的)。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。例子
const capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase());
capitalizeEveryWord('hello world!') ->'Hello World!'
\B:匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
\d:匹配一个数字字符。等价于[0-9]。
\D:匹配一个非数字字符。等价于[^0-9]。
\n:匹配一个换行符。
\r:匹配一个回车符。
\s:匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。(指换页、换行、回车、制表、垂直制表)。
\S:匹配任何可见字符。等价于[^ \f\n\r\t\v]。
\w:匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,这里的"单词"字符使用Unicode字符集。
\W:匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
< >:匹配词(word)的开始(<)和结束(>)。例如正则表达式<the>能够匹配字符串"for the wise"中的"the",但是不能匹配字符串"otherwise"中的"the"。注意:这个元字符不是所有的软件都支持的。
( ):将( 和 ) 之间的表达式定义为“组”(group)。例如用(the)(\d){3,}([a-z])匹配 "the12345hi12345"得出,["the12345h", "the", "5", "h"]。