正则 整理1

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

  • 字面量法

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中的应用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 作为一个程序员,要出去装逼,手中必备的技能就是正则表达式。程序员的正则表达式,医生的处方和道士的鬼画符,都是...
    Layzimo阅读 602评论 0 6
  • 转自: JS正则表达式一条龙讲解,从原理和语法到JS正则、ES6正则扩展,最后再到正则实践思路 温馨提示:文章很长...
    前端渣渣阅读 1,854评论 1 32
  • --------------------------正则的作用--------------------------...
    G_whk阅读 662评论 1 5
  • 晚上又看了一篇千与千寻,还是很感动。 父母因贪食变为猪后,孤立无援的千寻在白龙的指引下向汤婆婆寻求工作。汤婆婆不需...
    蛋蛋蛋君阅读 337评论 0 0
  • 我看了看有些干瘪的钱包,深深的叹了一口气。这个月还没有过半,可是有一个残酷的问题摆在在了我的眼前。那就是我的经济上...
    幽幽墨香阅读 510评论 0 1