1、正则直接量字符

\o NUL字符(\u000)
\t 制表符
\n 换行符(\u000A)
\v 垂直制表符
\f 换页符
\xnn 由16进制nn指定的拉丁字符
\uXXXX 由16进制XXXX指定的uncode字符
\cX 控制字符

2、正则字符

[....] 方括号内的任意字符
[^...] 非方括号内的任意字符
. 除换行符和和他uncode行终止符之外的任意字符
\w 任何ASCII码组成的字符 等价于[a-zA-Z0-9]
\W 任何非ASCII码组成的字符 等价于[^a-zA-Z0-9]
\s unicode空白符
\S 非unicode空白符
\d 任何ASCII码数字等价于[0-9]
\D 任何非ASCII码数字等价于[^0-9]
[\b] 退格符

3、正则重复

{n,m} 匹配前一项至少n次,但不能超过m次 等价于n =< x < m
{n,} 匹配前一项至少n次,或者更多次
{n} 匹配前一项n次
? 匹配前一项0次或者1次
+ 匹配前一项1次或者多次
* 匹配前一项0次或者多次

4、非贪婪的重复

非贪婪的匹配只需在待匹配的正则后面加一个“?”即可,这样能尽可能少的进行匹配
??,+?,*?,或{1,5}?等

5、选择,分组和引用

'|'或者匹配 选择引用
/ab|ed|rf/ 匹配ab ed rf其中一个,如果前面的被匹配,后面的将会被忽略,选择项的匹配的顺序是从左至右。
() 分组引用符使用
正则中括号的使用是多变的,
一个作用是吧单独的项作为子表达式使用,以便可以处理单独的项
例如:/java(script)/ 可以匹配java也可以匹配javascript后面的script可以有也可以没有
例子:/(ab/cd)+|ef/ 可以匹配ab或者cd的1次或者多次,也可以匹配ef
另一个作用是在完整的模式中定义子模式,当一个正则表达式成功的和目标字符串相匹配时,可以从目标串中抽出和圆括号相配的子串。
还有一个作用是是允许在同一个正则表达式的后部引用前面的子表达式。
例如:\1 表示引用的是第一个带括号的子表达式,\2就是第二个
(?:...)只组合,把项目合到一个单元,但不记忆与该组想匹配的字符。

  5.1、先行断言

  (?= ...)用以说明圆括号内的表达式必须正确匹配!
  例如:/[jJ]ava([sS]cript)?(?=\:)/ 匹配例如:javascript:the good...

  5.2、负向先行断言

  (?!....) 用以指定接下来的字符都不必匹配
  例如:/java(?!Script)([A-Z]\w*)/

6、string对象有四个方法支持正则匹配

  6.1 search()方法
  他的参数就是一个正则表达式,返回第一个与之匹配的串的起始位置!如果找不到返回-1。如果传入的参数不是正则表达式,函数会调用
  RegExp构造函数创建一个正则!search()方法不支持全局查找,因此会忽略修饰符/g;

  6.2 replace();替换方法

  他的参数有两个,一个是匹配的正则,一个是要匹配的字符串!如果参数设置修饰符g,则会把匹配到了都替换成最新的字符,如果没有指定

  修饰符g,只会替换第一个出现的字符!
  例如:text.replace(/javascript/gi,'JavaScript');
  replace函数的另外一个使用
  例如:
  var quot = /(^")/g;
  text.replace(quot,'"$1"');
  $1储存在$1中的内容
  replace的第二个参数还可以是函数,可以动态的计算并做替换!

  6.3 match()函数
  
他只有一个参数就是正则表达式,返回的是由匹配结果组成的数组,如果该方法的正则设置了修饰符g,会返回所有匹配到的结果!
  例如:
  '1plus 2 plus 3 kkk'.match(/\d+/g);//结果为[1,2,3]
  如果match函数的正则没有设置全局的g,也会返回一个数组,那么数组的结果就是第一个被匹配的内容和圆括号括起来的子表达式匹配的内容!
  例如:
  使用如下代码进行url解析:
  var pattern = /(\w+:)\/\/([\w.]+)\/(\S*)/;
  var url = 'vsv is a http://www.baidu.com/~fgf';
  var result = url.match(pattern);
  console.log(result); //["http://www.baidu.com/~fgf", "http:", "www.baidu.com", "~fgf", index: 9, input: "vsv is a http://www.baidu.com/~fgf"]
  if(result != null){
  var s1 = result[0];//http://www.baidu.com/~fgf
  var s2 = result[1];//http:
  var s3 = result[2];//www.baidu.com
  var s4 = result[3];//~fgf
  }
  
//他还返回另外两个属性:index和input
  给match()函数传入不带全局的正则实际上和正则的exec()函数返回的结果是一致的!

  6.4 split()函数

  split()函数的参数可以是正则表达式,可以按照正则指定的规则进行分割
  例如:
  '1 ,2 , 3,4, 5'.split(/\s*,\s*/);//["1", "2", "3", "4", "5"]

  7、RegExp 对象

  例如:
  var pa = new RegExp("\\d+","g");//第二个参数是可选的!

  8、exec 函数
  他总是返回一个匹配的结果,并提供本次返回的所有完整的信息,当调用的exec具有g时候,他就把当前的lastIndex定位为紧挨着匹配结果的位置
  当同一个正则表达式再次调用的时候就从上次的位置再次查找结果!如果没有查找到,会将lastIndex定位为0,这种特殊的行为可以使我们反复调用
  exec 函数!

javascript 正则介绍的更多相关文章

  1. JavaScript正则式入门

    正则式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规 ...

  2. JavaScript 正则

    元字符 预定义类 边界 ^在中括号中时,匹配非hello的 str = 'hello world' str.match(/[^hello]/g) //[" ", "w&q ...

  3. JavaScript正则实战

    *:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...

  4. JavaScript入门介绍(二)

    JavaScript入门介绍 [函数] 函数function 是Javascript的基础模块单元,用于代码的复用.信息影藏和组合调用. function a(){} 函数对象Function Lit ...

  5. JavaScript入门介绍(一)

    JavaScript入门介绍 [经常使用的调试工具][w3school.com.cn在线编辑] [Chrome浏览器 开发调试工具]按F121.代码后台输出调试:console.log("t ...

  6. 我也谈javascript正则匹配

    一.javascript 正则全局匹配 g 慎用test()方法 来个例子: var a = /^[a-z]+/gi; a.test('bb123'); //true a.lastIndex ; // ...

  7. javascript的介绍,实现和输出以及语法-javascript学习之旅(1)

    javascript的介绍 : 1.javascript死互联网最流行的脚本语言,可用于web和html,并且可用于服务器,pc和移动端 2.javascript脚本语言: 1.是一种轻量级的脚本语言 ...

  8. javascript的介绍、javascirpt的存在形式、javascript注释

    本文内容: javascript的介绍 javascirpt的存在形式 javascript注释 javascript的介绍: javascript是一种解释性脚本语言 它的用途是给html网页增加动 ...

  9. 《javascript高级程序设计》读书笔记(一)javascript简单介绍

    第一章:javascript简单介绍 Netscape Navigator 开发的javascript   Javascript的实现有三部分: 1.核心(ECMAScript):提供核心语言功能. ...

随机推荐

  1. 十依据一个有用的算法来找到最小(最大)的k的数量-线性搜索算法

    例如:进入1.2.3,4,5,6.7.8此8数字,最小的4图的1,2,3,4. 思路1:最easy想到的方法:先对这个序列从小到大排序.然后输出前面的最小的k个数就可以.假设选择高速排序法来进行排序, ...

  2. [搜索] hdu 4016 Magic Bitwise And Operation

    主题链接: http://acm.hdu.edu.cn/showproblem.php?pid=4016 Magic Bitwise And Operation Time Limit: 6000/30 ...

  3. Play Framework + ReactiveMongo

    Play Framework + ReactiveMongo Play!是一个full-stack(全栈的)Java/Scala Web应用框架,包括一个简单的无状态MVC模型,具有Hibernate ...

  4. HOWTO: 为GitHub for Windows指定代理服务器(转)

    If the command line way of configuring your proxy server doesn't work, you can probably just edit .g ...

  5. hdu4758 Walk Through Squares 自动机+DP

    题意:给n*m的地图,在地图的点上走,(n+1)*(m+1)个点,两种操作:往下走D和往右走R.现在要从左上角走到右下角,给定两个操作串,问包含这两个串的走法总共有多少种. 做法:用这两个串构建自动机 ...

  6. Cocos2d-x v3.0 正式版 如何创建一个项目,TestCpp执行

    欢迎增加 Cocos2d-x 交流群: 193411763 转载请注明原文出处:http://blog.csdn.net/u012945598/article/details/24456579 首先到 ...

  7. DevExpress Report 其他常用设计技巧

    原文:DevExpress Report 其他常用设计技巧 1 设置默认的打印纸张及页边距 选择Report-打开属性窗口,设置默认边距(Margins)和默认纸张(PaperKind). 2 修改R ...

  8. 现代JVM内存管理方法的发展历程,GC的实现及相关设计概述(转)

    JVM区域总体分两类,heap区和非heap区.heap区又分:Eden Space(伊甸园).Survivor Space(幸存者区).Tenured Gen(老年代-养老区). 非heap区又分: ...

  9. MySQL中游标使用以及读取文本数据

    原文:MySQL中游标使用以及读取文本数据 前言 之前一直没有接触数据库的学习,只是本科时候修了一本数据库基本知识的课.当时只对C++感兴趣,天真的认为其它的课都没有用,数据库也是半懂不懂,胡乱就考试 ...

  10. 第22章 职责链模式(Chain of Responsibility)

    原文 第22章 职责链模式(Chain of Responsibility) 职责链模式 导读:职责链模式是一个既简单又复杂的设计模式,刚开始学习这个设计模式的时候光示例都看了好几遍.就为了理清里面的 ...