使用正则表达式的模式匹配

1.var pattern=/s$/;此正则表达式对象和所有以字母“s”结尾的字符串都匹配

/java/就和所有的包含子串“java”的字符串相匹配

 ^$.*+?=!:|\/()[]{}特殊符号,如果加上前缀\,可按直接量使用这些符号

引号和@没有特殊含义

如要在正则表达式中添加按照直接量理解的反斜杠,必须用反斜杠将其转义,如/\\/匹配含反斜杠的字符串

2.字符类 []

 放在方括号内就可以组合成字符类,一个字符类和它所包含的任何字符都匹配

/[abc]/就和字母"a"、“b”、“c”中的任何一个字母都匹配

  否定字符类^

/[^abc]/匹配a,b,c之外的所有字符

/[a-z]/和/a-zA-Z0-9/

\s匹配的是空格符、制表符和其他Unicode空白符

\w等价于[a-zA-Z0-9_]

\d等价于[0-9] 

3.重复 {}?+*

{n,m}匹配前一项至少n次,但是不能超过m次

{n,}匹配前一项n次,或更多

{n}匹配前一项恰好n次

?匹配前一项0次或1次{0,1}

+匹配前一项1次或多次{1,}

*匹配前一项0次或多次{0,} 

4.非贪婪的重复?即往少里匹配

在重复字符后加问号即可(??,+?,*?,{1,5}?) 

例:/a+/应用到“aaa”上时,它与三个字母都匹配。但/a+?/只匹配一个或多个必要的字母a,因此只匹配第一个字母a

/a*?b/匹配“aaab”,而不是b,因为该模式的非贪婪版本在字符串的第一个字符处不匹配,所以该匹配将返回,甚至不考虑对后面的字符进行匹配 

当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。 

除换行符和其他Unicode行终止符外的任意字符   

5.选择、分组和引用 |,(),(?:...)

1) 正则表达式的语法还包括指定选择项、对子表达式分组和引用前一子表达式的特殊字符。字符“|”用于分隔供选择的字符

2) 在正则表达式中括号具有几种作用

(1)把单独的项目组合成子表达式,便于使用?+*|处理独立的单元,如:/java(script)?/

(2)在完整的模式中定义子模式,如:/[a-z]+(/d+)/从一个或多个的小写字母中挑选出结尾含一个或多个数字的字符串(强调包含结尾的数字)

(3)允许我们在同一个正则表达式的后部引用前面的子表达式(引用的不是子表达式的模式,而是与那个模式相匹配的文本),如: /(['''][^''']*\1)/开始和结束的引号相匹配

3)还可以使用(?:...)来分组,不获取匹配结果,这种改进了的括号并不生成引用,如:/([Jj]ava(?:[Ss]cript)?)\sis\s(fun\w*)/ ,\2引用了与(fun\w*)匹配的文本

匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。 

6.指定匹配的位置^,$,\b

正则表达式的锚:像\b这样的元素不指定匹配的字符串中使用的字符, 它们指定的是匹配发生的合法位置

^定位开头,$定位末尾,\b匹配边界

/^JavaScript$/如果要匹配Java这个单字/\bJava\b/ 

锚定条件:(?=) (?!)(?<=)(?<!)

(?=)正前向(正向预查)

正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。  

(?!)负前向(负向预查)

负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始 

(?<=正后向 解释:返回匹配的文本前面的内容必须是与=号的表达式相匹配,但不返回这个表达式

(?<!负后向

7. 标志i,g,m

 i:匹配小写

 g:匹配全局

 m:多行匹配 

8. 用于模式匹配的String方法

(1)search(),该方法以正则表达式为参数,返回第一个与之匹配的子串的开始字符的位置,如果没有任何匹配的子串,它将返回-1 

(2)replace() 执行检索与替换操作。参数1:正则;参数2:要替换的字符串;如果正则带g,它将替换所有匹配的字符串,如果不带g,它只替换第一个与之匹配的字符串;replace()第二个参数可为函数

 *如果在替换字符串中出现了符号$加数字,那么replace()将用与指定的子表达式

 

var  quote = / "([^"]*)" / g;
text.replace(quote,
" ‘‘$1’’ " ); 

 

(3)match() 参数为正则。返回包含结果的数组,且具有length,index和input属性

(4)split()可以以正则表达式为参数

9.RegExp对象

 RegExp类既定义了类属性,又定义了实例属性。第一个参数是包含正则表达式主题的字符串,使用\标示转义序列,必须使用\\替换所有\字符。第二个参数是可选的,可为"g","i","m"或它们的组合

(1)exec()以字符串为参数,有匹配,返回数组,没有匹配,返回null;具有g标志的正则调用exec()时,对象的lastIndex属性设置到紧接着匹配子串的字符位置。供下次检索做开始处使用。

(2)test() 它的一个参数是一个字符串,包含正则的一个匹配,就返回true

 

转载于:https://www.cnblogs.com/hinroe/archive/2011/06/15/2081667.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值