正则表达式概述

正则表达式是由普通字符和一些无字符组成的文字模式,他可以用于匹配不同的字符串。下面就对一些常用的模式做一下叙述:

在 js 中,我们可以通过使用RegExp对象创建一个新的正则表达式规则;

var reg = new RegExp(pattern,attributes)(构造函数,pattern为字符串,不用'/',attribute为正则表达式的标志)
var reg1 = new RegExp('class');
var reg2 = new RegExp('class''i');
var reg3 = new RegExp('class''ig');

我们也可以通过正则表达式直接量来创建

var reg1 = /class/;
var reg2 = /class/i;
var reg3 = /class/ig;

普通匹配

我们所需要做的就是在‘’里面填写相应的内容以匹配字符串。比如,我们在里面填写‘abc’这代表匹配源字符串中的‘abc’,当源字符串为“aaabc”,”abc”,”ddabcc”均可以匹配到。这种匹配类似于Java中的contains匹配。如果是匹配一些特殊符号,就必须加入转义符号才可用匹配成功。比如‘\?’可以匹配源字符串中的‘?’。
js中正则表达式的特殊符号有:! $ ^ * + = | . ? \ / ( ) [ ] { }
匹配以上特殊符号需加转义字符‘/’.

中括号匹配(匹配单个字符)

在js中,我们也可以使用中括号进行匹配。在’‘里面输入[ab].中括号可以理解为或是关系。当源文件中有’a’ ‘b’ ‘ab’ 均可以匹配成功.也可以用’-‘来限定范围。例如[a-z]匹配所有小写字符,常用的限定范围有以下几种:
- [a-z] //匹配所有小写字符
- [A-Z] // 匹配所有大写字符
- [1-9] // 匹配所有数字
‘^’ 的意思是非,也就是匹配相反的意思.例如[^abc]匹配的是不包含’a’ ‘b’ ‘c’ 或者 ‘abc’其他所有组合的源字符串。
下面有一些常用的通用匹配

  • . (匹配除了换行符和其他Unicode行终止符之外的所有字符)
  • \w (匹配所有ASCII单子字符,相当于[a-zA-Z0-9] 写的时候注意转义’\w’)
  • \W (同上面相反,相当于[^a-zA-Z0-9] )
  • \s (匹配任何Unicode空白符)
  • \S (同上面相反)
  • \d (匹配数字,相当于[0-9])
  • \D (同上面相反)

中括号匹配(匹配多个字符)

虽然上面的中括号匹配已经可以匹配所有的字符串,但都是单独匹配的。比如[a]可以匹配到所有包含a的字符串。但这只是单独的。如果我们要匹配包含’ab‘的字符串,用一个[a]就无法完成任务(ps:包含a的字符串和包含ab的字符串不是一个东西,’ac’ ‘ad’ ‘abc’ 可以说是包含a的字符串,但只有’abc’才是包含’ab’的字符串)。故,我们需要用[a][b]来匹配包含’ab’的字符串。但这是不合理的。所以我们需要用其他方法来匹配重复项。在正则表达式中,我们可以使用大括号来匹配次数,下面是一些常用的匹配:

  • {n} (匹配前一项n次,例如:ab{2},可以匹配’abb’,不能匹配’ab’或者’a’.ps:前一项指的是大括号前面的字符,上例中指的是字符’b’,如果是[ab]{2}代表源字符串中有’aa’ ‘ab’ ‘bb’即可匹配成功)
  • {n,} (匹配前一项至少n次,最多不限)
  • {n,m} (匹配前一项至少n次,最多m次。例如:ab{1,2},可以匹配’ab’ ‘abb’但无法匹配’abbb’)
  • ? (匹配前一项0次或1次,相当于{0,1})
  • ‘+’ (匹配前一项至少1次,相当于{1,})
  • ‘*’(匹配前一项0次或者多次,相当于{0,})

特殊

定位符

前面我们提到’^’的用处,它代表非的意思,但是这是写在中括号表达式里面的,如果没有中括号表达式,它表示定位符。例如:’^a’代表以字符’a’开头的字符串。比如’aa’,’ab’.’^ab’就是代表由’ab’开头的字符串。下面是一些常用的定位符

  • ^ (匹配字符串的开头,例如’^abd’可匹配’abdaaa’)
  • (,abd $’可匹配’aaaabd’)
  • \b (匹配一个词的边界,也就是单词和空格之间的位置,英文用的很多)
  • \B (和上面相反)

标志
我们也可以用一些规则来对正则表达式的匹配情况进行说明。规则一般写在/’之后。下面是一些规则

  • i (匹配时不分大小写,如/apple/i可以匹配 ‘Apple’ ‘apple’ ‘APPLE’ ‘aPpLe’)
  • g(匹配时执行全局匹配模式,找出所有的匹配,而不是找到第一个就停止)
  • m(匹配时执行多行匹配模式,即使用^匹配一行的开头和字符串的开头,使用$匹配一行的结尾或字符串的结尾)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值