重温JavaScript中的正则表达式 js学习笔记

2014-07-14  来源:本站原创  分类:正则表达式  人气:1 

创建正则表达式和创建字符串类似 , 创建正则表达式提供了两种方法 , 一种是采用 new运算符,另一个是采用字面量方式

一、创建正则表达式

  创建正则表达式和创建字符串类似 , 创建正则表达式提供了两种方法 , 一种是采用 new运算符,另一个是采用字面量方式。

  var dog = new RegExp('dog'); // 第一个参数字符串
  var dog = new RegExp('dog', 'ig'); // 第二个参数可选模式修饰符 

var dog = /dog/;
  var dog = /dog/ig; //字面量方式。

重温JavaScript中的正则表达式 js学习笔记

RegExp 对象包含两个方法 : test() 和 exec() , 功能基本相似 , 用于测试字符串匹配 。

   test()方法在字符串中查找是否存在指定的正则表达式并返回布尔值 , 如果存在则返回 true , 不存在则返回 false 。

   exec() 方法也用于在字符串中查找指定正则表达式,如果 exec() 方法执行成功,则返回包含该查找字符串的相关信息数组。如果执行失败,则返回 null 。

  虽然创建正则表达式对象比较简单,但真正复杂的却是用正则语法描述的模式信息。接下来,我们分几个小节分别探讨一些模式:

二、字符串的正则表达式方法

重温JavaScript中的正则表达式 js学习笔记

例如:

复制代码 代码如下:

var myPattern = /dog/ig;var theStr = "this is a dog,that is a dog!"console.log(theStr.match(myPattern)); //["dog", "dog"]
var myPattern = /dog/i;var theStr = "this is a dog,that is a dog!"console.log(theStr.search(myPattern)) //10
var myPattern = /dog/i; //注意没有设置全局,如果设置全局,结果为:this is a Cat,that is a Cat!var theStr = "this is a dog,that is a dog!"console.log(theStr.replace(myPattern,"Cat")); //this is a Cat,that is a dog!
var myPattern = /\s/ig;var theStr = "this is a dog,that is a dog!"console.log(theStr.split(myPattern)); //["this", "is", "a", "dog,that", "is", "a", "dog!"],这个加不加全局g没有影响!

二、直接量字符
在正则表达式中,所有字母字符和数字都是按照直接量与自身匹配的。同时,正则表达式还通过反斜杠“\”加字母来支持某些非字母的字符。见下面的匹配列表:
字符        匹配
字母和数字     自身 例如: /a/ 匹配 字母 a
\o         NUL字符
\t         制表符
\n         换行符
\v         垂直制表符
\f         换页符
\r          回车

三、字符类

将单独的直接字符放进[]内,就组成了字符类。一个字符类和它所包含的任何字符都匹配。

  例如:/[abc]/ 与abc三个字母的任意一个匹配。
同时,还可以定义否定字符类。利用^字符。例如:/[^abc]/匹配a b c以外的所有字符。
另,可以用连字符号确定一个字符的范围。例如:/[a-z]/匹配a到z。要匹配所有拉丁字母集,可以使用/[a-zA-Z0-9]/
字符      匹配

.        除换行符和其他Unicode行终止符之外的任意字符
\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]       退格直接量
  注意,方括号[]内也可以使用上面的转义序列。例如/[\s\d]/ 匹配任意的空白符或数字。

四、重复

  根据第二节涉及到的知识,我们可以把两位数表述成/\d\d/,但,如果重复次数过多,肯定就不能这样写了。
字符      匹配
{n,m}     匹配前一项至少n次,但不超过m次
{n,}      匹配前一项大于等于n次

{n}       恰好n次
?        0次或1次,
+       1次或者多次,等价于{1,}
*        0次或多次
  例如:/\d{2,4}/ 2个、3个或4个数字。   /\w{3}\d?/ 匹配3个字符,并有一个可选的数字。
注意:/a*/实际上与bbbb是匹配的,因为0个或多个a与bbbb匹配。

五、锚字符
重温JavaScript中的正则表达式 js学习笔记

六、选择、分组和引用

  1、字符“|”用于分隔选择的字符。例如:/ab|cd|ef/匹配字符串ab或cd或ef。 /\d{3}|[a-z]{4}/匹配3个数字或4个小写字母

  2、"()"作用是把单独的项目组合成子表达式。例如:/java(script)?/ 匹配java,其后可以有script,也可以没有。

注意,在分组中,$1、$2、$3分别表示第几个分组中的内容。

  例如:

var myPattern = /(dog).*(cat)/;var theStr = "this is a dog,that is a cat!"myPattern.exec(theStr);console.log(RegExp.$2 + " " + RegExp.$1); //cat dog console.log(RegExp.lastMatch); //最后一次匹配的项:dog,that is a cat

七、贪婪与惰性



重温JavaScript中的正则表达式 js学习笔记

例如:

复制代码 代码如下:

var myPattern = /[a-z]+/;var theStr = "this is a dog,that is a cat!"console.log(theStr.replace(myPattern, "a")); //a is a dog,that is a cat! 贪婪的,把this都匹配了!
var myPattern = /[a-z]+?/;var theStr = "this is a dog,that is a cat!"console.log(theStr.replace(myPattern, "a")); //ahis is a dog,that is a cat! 非贪婪的,只把this中的t匹配了!

最后,RegExp实例继承的toLocaleString()和toString()方法都会返回正则表达式的字面量,即/abc/

相关文章
  • 重温JavaScript中的正则表达式 js学习笔记 2014-07-14

    创建正则表达式和创建字符串类似 , 创建正则表达式提供了两种方法 , 一种是采用 new运算符,另一个是采用字面量方式 一.创建正则表达式 创建正则表达式和创建字符串类似 , 创建正则表达式提供了两种方法 , 一种是采用 new运算符,另一个是采用字面量方式. var dog = new RegExp('dog'); // 第一个参数字符串 var dog = new RegExp('dog', 'ig'); // 第二个参数可选模式修饰符 var dog = /dog/; var dog =

  • Node.js中的模块机制学习笔记 2015-03-20

    这篇文章主要介绍了Node.js中的模块机制学习笔记,本文讲解了CommonJS模块规范.Node模块实现过程.模块调用栈.包与NPM等内容,需要的朋友可以参考下 Javascript自诞生以来,曾经没有人拿它当做一门编程语言.在Web 1.0时代,这种脚本语言主要被用来做表单验证和网页特效.直到Web 2.0时代,前端工程师利用它大大提升了网页上的用户体验,JS才被广泛重视起来.在JS逐渐流行的过程中,它大致经历了工具类库.组件库.前端框架.前端应用的变迁.Javascript先天就缺乏一项功

  • Node.js 学习笔记之简介.安装及配置 2014-05-23

    本文是Node.js学习笔记系列文章的第一篇,主要给大家讲解的是在Windows和Linux上安装Node.js的方法.软件安装版本以0.12.0为例.希望大家能够喜欢. 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好. 谁适合阅读本教程?

  • Python中的自定义函数学习笔记 2013-12-27

    这篇文章主要介绍了Python中的自定义函数学习笔记,本文讲解了定义函数.callable函数.help函数等内容,需要的朋友可以参考下 定义一个什么都不做的函数 >>> def a(): ... pass ... >>> def printHello(): ... print("hello") ... >>> printHello() hello >>> callable(printHello) True 顾名思

  • javascript中使用正则表达式实现删除字符串中的前后空格 2014-12-04

    在前台应用进我们经常会碰到要删除用户输入的字符中的空格的问题,下面我们来介绍一下javascript中使用正则表达式实现删除字符串中的空格方法 实例 <script> var str=" yexj00 "; str=str.replace(/^s*|s*$/g,''); alert(str); </script> 实例 模仿RTrim: 复制代码 代码如下: <script> var str="yexj00 "; str=str.

  • JavaScript高级程序设计 客户端存储学习笔记 2014-12-16

    JavaScript高级程序设计 客户端存储学习笔记,在客户端用于存储会话信息 第十九章 客户端存储 1.cookie ①最初是在客户端用于存储会话信息的. 1.1 限制 ①cookie在性质上是绑定在特定的域名下的.当设定了一个cookie后,再给创建它的域名发送请求时,都会包含这个cookie. ②cookie的限制: □IE6以及更低版本限制每个域名最多20个cookie. □IE7和之后版本每个域名最多50个cookie. □Firefox50个 □Opera50个 □Safari和Ch

  • js学习笔记 2011-04-06

    /* js学习笔记 */ DOM (Document Object Model 文档对象模型) Javascript没有像编译型语言那样有int, double, char之类的不同类型,只有一种类型,var类型, 例如: var mood = "happy"; var age = 33; 这些都是合乎语法的,且语法是区分大小写的. 数组: var beatles = Array(); var beatles = Array(4); var beatles = ("one&q

  • Javascript中的正则表达式 2014-04-30

    正则表达式提供了强大的字符串检索和操作的能力,这些能力在Javascript中有着比其他语言更广泛的应用.对于运行于浏览器环境中的Javascript,HTML文档的DOM操作和样式操作是其主要任务之一,正则表达式的非凡能力正可以应用于此,如:操作DOM节点的内容.解析元素选择器.根据属性值过滤和匹配元素等等.通常总是存在其它方式实现这些操作,但正则表达式可以使我们的实现更加简洁和优雅(一个例子). 1.Javascript中的正则表达式 ECMAscript内置了标准的对象类型RegExp,提

  • Perl中的文件读写学习笔记 2013-11-12

    这篇文章主要介绍了Perl中的文件读写学习笔记,本文讲解了打开.关闭文件.读文件.写文件.判断文件状态等内容,需要的朋友可以参考下 一.打开.关闭文件 语法为open (filevar, filename),其中filevar为文件句柄,或者说是程序中用来代表某文件的代号,filename为文件名,其路径可为相对路径,亦可为绝对路径. open(FILE1,"file1"); open(FILE1, "/u/jqpublic/file1"); 打开文件时必须决定访问

  • JavaScript中的正则表达式解析 2013-12-24

    JavaScript中的正则表达式解析 正则表达式(regular expression)对象包含一个正则表达式模式(pattern).它具有用正则表达式模式去匹配或代替一个字符串(string)中特定字符(或字符集合)的属性(properties)和方法(methods).要为一个单独的正则表达式添加属性,可以使用正则表达式构造函数(constructor function),无论何时被调用的预设置的正则表达式拥有静态的属性(the predefined RegExp object has s

  • Ruby中的Range对象学习笔记 2014-05-10

    这篇文章主要介绍了Ruby中的Range对象学习笔记,本文讲解了Range对象的定义.Range对象的一些使用技巧等内容,需要的朋友可以参考下 Range是范围对象的类,定义的时候可以使用范围操作符".."或者"...",".."生成的范围对象包括起点和终点,"..."生成的范围对象不包括起点和终点,范围是由是一序列有顺序.有规律的元素对象组成,任何有顺序,有规律的一组对象,都可以用Range对象来定义,如数字.字母.字符串.

  • javaScript中的this示例学习详解及工作原理 2014-08-24

    这篇文章主要介绍了javaScript中的this示例学习详解及工作原理,大家参考使用吧 this的工作原理 如果一个函数被作为一个对象的方法调用,那么this将被指派为这个对象. var parent = { method: function () { console.log(this); } }; parent.method(); // <- parent 注意这种行为非常"脆弱",如果你获取一个方法的引用并且调用,那么this的值不会是parent了,而是window全局对

  • Ruby中的String对象学习笔记 2014-10-25

    这篇文章主要介绍了Ruby中的String对象学习笔记,本文讲解了String对象的定义.String对象的操作.使用数组下标的方式操作字符串等内容,需要的朋友可以参考下 1.String对象定义 String对象的定义可以使用""和'',对于单纯的字符串,推荐使用''进行定义,效率比""高,""与''的区别在于,''内的字符串定义后就是最终形态,即使如\n换行符,也会原样输出,而""更像是一个表达式,解析器会针对其中的特殊字

  • JavaScript中的正则表达式简明总结 2014-11-30

    这篇文章主要介绍了JavaScript中的正则表达式,简明总结了正则中的语法含义和RegExp对象,需要的朋友可以参考下 一.定义正则表达式的方法 定义正则表达式的方法有两种:构造函数定义和正则表达式直接量定义.例如: var reg1 = new RegExp('\d{5, 11}'); // 通过构造函数定义 var reg2 = /\d{5, 12}/; // 通过直接量定义 正则表达式直接量字符 \o:NUL字符(\u0000) \t:制表符(\u0009) \n:换行符(\u000A)

  • javascript中的正则表达式使用指南 2015-03-04

    这篇文章主要给大家介绍了Javascript中的正则表达式的使用方式,非常的详细,并附上简单示例,这里推荐给大家. 使用方式 1.创建表达式 JavaScript中创建正则表达式类的方法: var regex = new RegExp("\\d{5}") 或者 2.var regex = / \d{5} /(推荐) /表达式/是JavaScript中专门为简化正则表达式编写而提供的语法,写在//中的正则表达式就不用管转义符了. RegExp对象的方法: 2.判断是否匹配 test(st

  • js中回调函数的学习笔记 2013-12-11

    这篇文章主要介绍了js中回调函数的相关知识,需要的朋友可以参考下 回调函数是什么在学习之前还真不知道js回调函数怎么使用及作用了,下面本文章把我在学习回调函数例子给各位同学介绍一下吧,有需了解的同学不防进入参考. 回调函数原理: 我现在出发,到了通知你" 这是一个异步的流程,"我出发"这个过程中(函数执行),"你"可以去做任何事,"到了"(函数执行完毕)"通知你"(回调)进行之后的流程 例子 1.基本方法 <s

  • JavaScript高级程序设计 XML.Ajax 学习笔记 2015-02-24

    JavaScript高级程序设计 XML.Ajax 学习笔记,需要的朋友可以参考下. 第十五章 JavaScript与XML 1.浏览器对XML DOM的支持 1.1 DOM2级核心 ①在DOM2级在document.implementation中引入了createDocument()方法(IE6~8不支持). 可以创建一个空白XML. var xmldom = document.implemention.createDocument(namespaceUri,root,docype); ②要创

  • 精通 JavaScript中的正则表达式 2013-04-08

    相关文章: JS正则表达式详解[收藏] Javascript正则表达式笔记 javascript基础知识大集锦(2) JavaScript 精通 JS正则表达式 (精通?标题党 ) 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证 •替换文本.可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字 •根据模式匹配从字符串中提取一个子字符串.可以用来在文本或输

  • Node.js学习笔记一 2013-07-28

    一.Node.js是什么? "Node.js 是服务器端的 JavaScript 运行环境,它具有无阻塞(non-blocking)和事件驱动(event-driven)等的特色,Node.js 采用 V8 引擎,同样,Node.js 实现了类似 Apache 和 nginx 的web服务,让你可以通过它来搭建基于 JavaScript 的 Web App." Node.js不是JS应用.而是JS运行平台 Node.js采用C++语言编写而成,是一个Javascript的运行环境.既然

  • javascript中使用正则表达式进行字符串验证示例 2014-07-16

    我写的一个表达式验证示例:功能如下:用户名,不能为空;密码6为数字;密码确认,两次输入密码必须相同;身份证号码必须是15位,或者是18位,最末尾也可以是X var reg=/正则表达式/: boolean reg.test(要验证的字符串); js引擎会将/正则表达式/""转换成一个RegExp对象,当字符串满足正则表达式的要求事,返回true. 我写的一个表达式验证示例:功能如下: 用户名,不能为空 密码6为数字 密码确认,两次输入密码必须相同 身份证号码必须是15位,或者是18位,