正则基础整理

正则表达式有两种创建方式

  • 字面量法

var reg =/jack/;

  • 构造函数法

var reg = new RegExp("jack","options" ); //需要两个字符串参数,正则的字符串表现,一个可选的标志字符窜(i/g/m);

实例方法

  1. exec(),接受一个需要应用正则的字符串,若返回包含第一个匹配项信息的数组,如无匹配则返回null
    返回的数组包含两个额外属性
  • input 应用正则的字符串(即传入的字符串)
  • index 匹配项在字符串中的位置

var text ="jack yin and haha"
var reg =/jack yin (and (haha)?)?/g
reg.exec(text) //["jack yin and haha", "and haha", "haha"]

首先匹配整个字符串得到数组第一项,然后是第一个捕获组(and haha)?,最后是(haha)?,若没有捕获组则返回数组只包含一项。(捕获组就是在括号里面的匹配项)

(x)----->匹配‘x’并且记住匹配项。这个被叫做捕获括号。

在exec中如果不使用g(全局匹配),每次调用exec()都返回第一个匹配项,使用全局搜索,每次返回一个匹配项,每次调用exec()会继续查找新匹配项。

2.test()接受一个字符串参数,若模式匹配则返回true,不匹配返回false
常用于if判断中

特殊字符

/ 转义
^ 匹配开始
$ 匹配结束
* 匹配前一项任意次
+ 一次或多次 和{1,}效果相同
? 0或1次 如果?跟在(*、+)量词后面则会使量词变成非贪婪模式,默认是贪婪模式(匹配最多的次数)使用/\d+/非全局匹配“123abc"将返回”123“,如果使用/\d+?/就会只匹配到1
. 匹配除换行符(\n)之外任意单个字符

(x) 捕获括号 匹配到的子串可以通过结果数组[0],[1],[2]...取得
x(?=y)正向肯定查找 /jack(?=haha)/只会匹配后面跟着haha的jack
x(?!y)正向否定查找 /jack(?!haha)/只会匹配后面没有跟haha的jack
x|y x或y
{n} 匹配前一字符出现了n次(n为正整数)
{n,m} 匹配前面字符至少出现n次,最多m次
[a-z.] 字符集合,匹配括号中的任意字符
[^a-z] 反向字符集 ,匹配没有包含在放括号中的字符
[\b]匹配一个退格
\b 匹配一个词的边界/\bm/匹配moon-->m
\B 匹配一个非单词边界(他匹配一个前后字符都是相同类型的位置:都是单词或者都不是单词。一个字符串的开始和结尾都被认为是非单词。) /\Bm./匹配momn --->mn
\cX 当x是一个处于a-z之间的字符的时候,匹配字符串中一个控制符(未校验)
\d 匹配一个数字 等价于[0-9]
\D 匹配一个非数字字符等价于[^0-9]
\f 换页符
\n 换行符
\r 回车符
\s 匹配空白字符(包括空格、换行、换页、制表)
\S 匹配非空字符

var reg =/\S\w/; var str ="foo bar"; reg.exec(str)
["foo"]
var reg =/\s\w
/; var str ="foo bar"; reg.exec(str)
[" bar"]

\w 匹配一个单一字符(字母、数字、下划线)等价于[a-zA-Z0-9_]
\W匹配一个非单字字符

var reg=/\W/; var str ="50%"; reg.exec(str)
["%"]

下一节补充正则在string的match/replace/search/split中的应用

转载于:https://www.cnblogs.com/V-JACK/p/5312160.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值