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”前后必须有一个或多个空格

选择.分组和引用

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。