正则表达式必知必会-1

 纯文本匹配

Hello, my name is Ben. Please visit my website at http://www.forta.com.

这里使用了普通文本正则表达式,他将匹配的原始文本里的Ben,再看一个例子:my, 它在原始文本里面找到了两个匹配结果。

匹配任意字符 

.字符(英文句号)可以匹配任意单字符,有些特殊的符号如换行符是无法匹配的。

上述例子中,因为.能够匹配任意单个字符,所以excel.也匹配该文件。

.允许一次使用多个,它可以连续使用,也可以在任意位置出现。

匹配特殊字符

我们使用/来对特殊字的转义,表示后面所跟随的符号是正则表达式里有有特殊含义的。

查看以nx,ex开始的xml文件名

匹配多个字符中的某一个

请匹配nx和ex开头的xml文件,我们可以使用元字符[和]来定义一个字符集合。在使用[和] 定义的字符集和里,出现在[和] 之间的所有字符都是该集合的组成部分,必须匹配其中某个成员(但并非全部)

这种字符集合一般用于不区分大小写的搜索如:

[Rr]eg[Ee]x

The phrase "regular expression" is often abbreviated as RegEx or regex.

利用字符集合区间

如果要匹配na和sa开始的以数字结尾的xls文件如下图

如果要抛开sam.xls,需要用数字集合来解决,如下图

[ns]a[0123456789]\.xls

na1.xls
na2.xls
sa1.xls
ca1.xls
sam.xls

连字符

上述例子中用到了集合[0123456789]表示匹配数字,为了简化字符区间的定义,正则表达式提供了一个特殊的元字符-(连字符)来定义字符区间,它只出现在[和]之间的时候才是元字符,可以将上述的案例改写成

[ns]a[0-9]\.xls

na1.xls
na2.xls
sa1.xls
ca1.xls
sam.xls

字符区间并不仅限于数字,一下这些都是合法的字符区间。

A-Z,匹配从A到Z的所有大写字母

a-z,匹配从a到z的所以小写字母

A-F,匹配从A到F的所有大写字母

A-z,匹配ASCII字符A到ASCII字符z的所有字符

在同一个字符集里可以出现多个字符区间。比如说[A-Za-z0-9]:匹配所有大小写字母和数字

排除

我们通常用元字符:^来排除某个字符集合,如下面例子,我们需要拿ns开始的,没有数字的文章

[ns]a[^0-9]\.xls

注意:^的效果将作用于给定字符集合里面的所有字符或字符区间,而不是仅限于紧跟在^字符后面的哪一个字符或字符区间。

转义

var myArray = new Array();
...
if(myArray[0] == 0){
...
}

匹配myArray[0]

匹配空白字符

[\b]        回退(并删除)一个字符(Backspace键)

\f           换页符

\n          换行符

\r           回车符

\t           制表符(Tab键)

\v          垂直制表符

"101","Ben","Forta"
"102","Jim","James"


"103","AAA","DDD"
"104","BBB","CCC"

匹配特定的字符类型

匹配数字

\d        任何一个数字字符(等价于[0-9])

\D        任何一个非数字字符(等价于[^0-9])

匹配字母数字

\w        任何一个字母数字字符(大小写均可)或下划线字符(等价于[a-zA-Z0-9_])

\W        任何一个非字母数字或非下划线字符(等价于[^a-zA-Z0-9_])

匹配空白字符

\s        任何一个空白字符(等价于[\f\n\r\t\v])

\S        任何一个非空白字符(等价于[^\f\n\r\t\v])

匹配十六进制

\x0A(对于ASCII字符10,也就是换行符)等价于\n

匹配八进制

\011(对于ASCII字符9,也就是制表符)等价于\t

匹配POSIX字符类(JS不支持)

[:alnum:]        任何一个字母或数字(等价于[a-zA-Z0-9])

[:alpha:]         任何一个字母(等价于[a-zA-Z])

[:blank:]         空格或制表符(等价于\t )

[:cntrl:]           ASCII控制字符(ASKII 0到31,再加上ASCII127)

[:digit:]           任何一个数字(等价于[0-9])

[:graph:]        和[:print:]一样,但不包括空格

[:lower:]         任何一个小写字母(等价于[a-z])

[:print:]           任何一个可打印字符

[:punct:]         即不属于[:alnum:]  ,也不属于[:cntrl:]的任何一个字符

[:space:]        任何一个空白字符,包括空格(等价于[\f\n\r\t\v ])

[:upper:]         任何一个大写字母(等价于[A-Z])

[:xdigit:]          任何一个十六进制数字(等价于[a-fA-F0-9])

使用POSIX字符类,需要以[[开始,以]]结束(两对方括号),如:[[:digit:] ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值