JavaScript正则表达式

JavaScript拥有强大的基于正则表达式进行模式匹配的能力。

正则表达式中字符分为普通字符和元字符。元字符是指那些在模式的某些上下文中具有特殊意义的字符,下面列出了模式元字符:

\ | ( ) [ ] { } ^ $ * + ? .

元字符如果想要匹配自身的话,必须在字符前面添加一个反斜杠进行转义。

句点可以匹配任何字符,换行符除外。如/snow./可以匹配"snowy"、"snowe"、"snowd"等。要匹配字符串中的一个句点,需要在模式中的句点前加一个反斜杠。例如/3\.4/只能匹配3.4。

可以把一组字符(即一个字符类)放到方括号中来匹配它们中的任意一个。例如[abc]可以匹配"a"、"b"、"c"当中的任何一个。同样,也可以定义如下字符类,它能够匹配"a"到"h"之间的所有小写字母:[a-h]。如果一个字符类中的第一个字符是抑扬符号^,其含义为反转指定的字符集。例如下面的字符类可以匹配除"a"、"e"、"i"、"o"、"u"以外的所有字母:[^aeiou]。

由于经常使用字符类,因此javascript预定义了一些字符类,可以通过名称加以引用:

预定义的字符类
名称等价模式匹配的内容
\d[0-9]数字
\D[^0-9]一个非数字
\w[a-zA-Z_0-9]一个单词字符
\W[^a-zA-Z_0-9]一个非单词字符
\s[\r\t\n\f]一个空白字符
\S[^\r\t\n\f]一个非空白字符

很多情况下,需要对模式的某一个部分进行重复。为了重复一个模式,需要加一个数字限定符,该数字限定符位于花括号之中。例如下面的模式能够匹配xyyyyz:/xy{4}z/。

除数字限定符外,还有三种符号限定符,分别是*、+、?,*表示0次或多次重复;?表示0次或1次重复;+表示1次或多次重复。

此外也经常使用另一个命名模式,\b。它能够匹配一个单词字符(\w)和非单词字符(\W)之间(这两者没有顺序之分)的边界位置。

可以通过锚在模式中指定字符串的位置。通过将锚^放到模式之前,就可以指定该模式只匹配字符串的开头。在模式后加一个$可以将该模式指定为只匹配字符串的末尾部分。例如/^pearl/可以匹配"pearls are pretty",而无法匹配"My pearls are pretty"。/gold$/可以匹配"I like gold"而无法匹配"golden"。

锚字符类似于边界命名模式,它们不匹配字符串中的某个字符,只匹配字符之前、之后、之间的位置。如果锚字符^不出现在模式的开头或字符类的开头,它就没有特殊含义(匹配自身)。同样,如果$不出现在模式的结尾,那它也没有特殊含义。

模式修饰符可以加到模式之后,用于修改模式的应用方式。例如修饰符i可以使模式中的字母既可以匹配字符串中的小写字母,又可以匹配大写字母。如/Apple/i可以匹配"APPLE"、"apple"、"APPle"等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值