js 中正则表达式详解
直接量字符
正则表达式中所有的字母字符和数字都是按照直接量与自身相匹配,
javascript的正则表达式语法还通过以反斜杠(/)开头的转义序列支持某些非字母的字符。例如”\n”在字符串中匹配的是直接量换行符
正则表达式的直接量字符:
字符 | 匹配 |
---|---|
字母数字字符 | 自身 |
\o | NUL字符 |
\t | 制表符 |
\n | 换行符 |
\v | 垂直制表符 |
\f | 换页符 |
\r | 回车 |
\xnn | 由十六进制数nn指定的拉丁字符 |
\uxxxx | 由十六进制数xxxx指定的Unicode字符 |
\cX | 控制字符^X。例如,\cJ等价与换行符\n |
在正则表达式中,许多字符都有特殊含义,他们是:
^ $ . * + ? = ! : | \ / ( ) [ ] { }
字符类
将单独的直接量字符放进方括号内就可以组合成字符类。一个字符类
和它所包含的任何字符都匹配。所以正则表达式/[abc]/就和字
母”a”,”b”,”c”中的任何一个字母都匹配。另外,还可以定义否定
字符类,这些类匹配的是不包含在方括号之内的所有字符。定义否定字
符类的时候,要将一个^符号作为左方括号后的第一个字符。正则表达
式/[^abc]/匹配的是”a”,”b”,”c”之外的所有字符。字符类可以
使用连字符来表示一个字符范围。要匹配拉丁字母集中的任何小写字
符,可以使用/[a-z]/,要匹配拉丁字母集中任何字母数字字符,则使
用/[a-zA-Z0-9]/。
正则表达式的字符类
字符 | 匹配 |
---|---|
[…] | 位于括号之内的任意字符 |
[^…] | 不在括号之中的任意字符 |
. | 除换行符和其他Unicode行终止符之外的任意字符 |
\w | 任何Ascll单字字符,等价于[a-zA-Z0-9_] |
\W | 任何非Ascll单仔仔符,等价于[^a-zA-Z0-9_] |
\s | 任何Unicode空白符 |
\S | 任何非Unicode空白符的字符 |
\d | 任意Ascll数字,等价于[0-9] |
\D | 除了Ascll数字之外的任意字符,等价于[^0-9] |
重复
正则表达式的重复字符
字符 | 含义 |
---|---|
{n,m} | 匹配前一项至少n次,但是不能超过m次 |
{n,} | 匹配前一项n次,或更多次 |
{n} | 匹配前一项恰好n次 |
? | 匹配前一项0次或1次,也就是说前一项是可选 |
+ | 匹配前一项1次或多次 |
* | 匹配前一项0次或多次 |
下面我们就来举例说明:
a=’a2b3c123dfg’
a.match(/\d{2,4}/) // [“123”]
从字面上理解就是匹配(\d任意数字)->({2,3}最少2次,最多3次). 也就是
说在字符串中找到连续的数字条件是最少2个在意,最多三个。那如果
我们改成这样a.match(/\d{4,5}/),结果就为”null”应为a字符串里没有超过4个数字在一起的。那如果 a.match(/\d{1,1}/) ,结果它会输出字符串里从做到右第一个满足条件的,那就是第一个”2”.
a=’ a2b323c123dfg’
a.match(/\w{3}\d?/) // ["a2b3"]
从字面上理解(\w表示任意ascll字符),({3}匹配正好3次),(\d再匹配任意数字),(?匹配一个或没有)。如果我们这样a.match(/\w{3}\d*/) //结果为["a2b323"]
a=‘123abc java 2df3‘
a.match(/\s+java\s+/) // [" java "]
把”java”找出来,且”java”前后必须有一个或多个空格
选择.分组和引用
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。