正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

正则 描述 正则 描述
\f 匹配换页符 \t 匹配制表符
\n 匹配换行符 \v 匹配垂直制表符
\r 匹配回车 \s 匹配单个空格,等同于[\f\n\r\t\v];
\S 表示非空格字符 \d 在正则中表示数字
\w 表示单词字符,等同于字符集合[a-zA-Z0-9_] \ 创建正则对象时,要转义
+ 表示出现一到多次 ^ 表示后边出现的数字必须在开头
$ 表示前面出现的数字必须出现在结尾    

g是模式修正符,表示在整个字符串里多次查找

match方法来找到和reg正则相匹配的内容

"ab23839cd".match(/\d+/)

空白\s(包括空格回车制表符等)

\f匹配换页符,\n匹配换行符,\r匹配回车,\t匹配制表符,\v匹配垂直制表符。
\s匹配单个空格,等同于[\f\n\r\t\v]。例如:
例1:

var reg = /\s.+/;
var str='This is a test String.';
alert(reg.exec(str));

返回“is a test String.”,正则的意思是匹配第一个空格以及其后的所有非换行字符。

同样,\S表示非空格字符。
例2:

var reg = /\S+/;
var str='This is a test String.';
alert(reg.exec(str));

匹配结果为This,当遇到第一个空格之后,正则就停止匹配了。

在正则中最常用到的一个是:
例3:var reg=/^\s*$/; //匹配任意空或空白字符,如果你什么也没输入,或输入的只有空格、回车、换行等字符,则匹配成功。这样就可以验证用户是否正确输入内容了。
这个用来验证输入框里是否写了有效效字符,用法如下:

var  reg=/^\s*$/;
if(reg.test(value)){
alert('请输入有效值');
return false;
}

单字符\w

\w(小写w)表示单词字符,等同于字符集合[a-zA-Z0-9_]。例如:

var reg = /\w+/;
var str='wanjinfen';
alert(reg.exec(str));

返回完整的wanjinfen字符串,因为所有字符都是单词字符。

var reg = /\w+/;
var str='.className';
alert(reg.exec(str));

结果显示匹配了字符串中的className,只有第一个“.”唯一的非单词字符没有匹配。

var reg = /\w+/;
var str='正则教程';
alert(reg.exec(str));

试图用单词字符去匹配中文自然行不通了,返回 null

\W(大写W)表示非单词字符,等效于[^a-zA-Z0-9_]

var reg = /\W+/;
var str='正则教程';
alert(reg.exec(str));

返回完整的字符串,因为,中文算作是非单词字符。

分组和分组的引用

形式如下:/(子正则表达式)\1/ 依旧用例子来说明:

1.例子

var reg = /\w/;
var str='zhufengpeixun';
alert(reg.exec(str));
//返回z

2.例子

var reg = /(\w)(\w)/;
var str='zhufengpeixun';
alert(reg.exec(str));

返回zh,z,h ,zh是整个正则匹配的内容,z是第一个括号里的子正则表达式匹配的内容,h是第二个括号匹配的内容

3.例子

var reg = /(\w)\1/;
var str='zhufengpeixun';
alert(reg.exec(str));

则会返回null。这里的“\1”就叫做反向引用,它表示的是第一个括号内的子正则表达式匹配的内容。在上面的例子中,第一个括号里的(\w)匹配了z,因此“\1”就同样表示z了,在余下的字符串里自然找不到z了。与第二个例子对比就可以发现,“\1”是等同于“第1个括号匹配的内容”,而不是“第一个括号的内容”

var reg = /(\w)\1/;
var str='bbs.zhufengpeixun.cn';
alert(reg.exec(str));

这个正则则会匹配到bb,b。同样,前面有几个子正则表达式我们就可以使用几个反向引用。例如:

var reg = /(\w)(\w)\2\1/;
var str='woow';
alert(reg.exec(str));

会匹配成功,因为第一个括号匹配到w,第二个括号匹配到o,而\2\1则表示ow,恰好匹配了字符串的最后两个字符。

括号() ,表示子表达式,也叫分组

前面我们曾经讨论过一次括号的问题,见下面这个例子:

var reg = /^(b|c).+/;
var str='bbs.blueidea.com';
alert(reg.exec(str));

这个正则是为了实现只匹配以b或者c开头的字符串,一直匹配到换行字符,但是。上面我们已经看到了,可以使用“\1”来反向引用这个括号里的子正则表达式所匹配的内容。而且exec方法也会将这个字正则表达式的匹配结果保存到返回的结果中。

未完……

JS正则表达式笔记的更多相关文章

  1. js读书笔记

    js读书笔记 基本类型的基本函数总结 1. Boolean() 数据类型 转换为true的值 转换为false的值 Boolean true false String 任何非空字符串 "&q ...

  2. 初识JS正则表达式

    初识JS正则表达式 看到的使用的正则表达式练习:http://www.cnblogs.com/wenanry/archive/2010/09/06/1819552.html PS:本文参考李炎恢JS笔 ...

  3. 【正则】精通JS正则表达式,没消化 信息量太大,好文

    http://www.jb51.net/article/25313.htm 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用 ...

  4. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  5. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  6. 使用外部web组件-----easyUI、jQueryUI、Bootstrap、js正则表达式

    1.使用外部web组件,以Bootstrap为例 <head> <link rel='stylesheet'  href='bootstrap-3.3.0-dist/dist/css ...

  7. Vue.js学习笔记(2)vue-router

    vue中vue-router的使用:

  8. js正则表达式图形化工具-rline

    github地址:https://github.com/finance-sh/rline 在线demo: http://lihuazhai.com/demo/test.html 这是一个js正则表达式 ...

  9. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

随机推荐

  1. 团队合作之Scrum

    CCSU小助手 一:开发团队简介 队名:瓜队 组员:钟文兴.周畅.吉刘磊.唐仲勋 宣言:We are a team at any time! 团队项目描述: 内容:“生活在长大”: 目标:为了方便对学 ...

  2. 团队第四次SCrum

    scrum 第四次冲刺 一.项目目的        为生活在长大的学生提供方快捷的生活服务,通过帖子发现自己志同道合的朋友,记录自己在长大点滴.本项目的意义在于锻炼团队的scrum能力,加强团队合作能 ...

  3. 使用DOM Breakpoints找到修改属性的Javascript代码

    使用Chrome开发者工具的DOM断点功能可以让您快速找到修改了某一个DOM元素的Javascript代码. 在Chrome开发者工具里,选中想要监控的DOM元素,点击右键,选择Break on-&g ...

  4. Android(java)学习笔记13:线程组的概述和使用

    1. Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制. (1)默认情况下,所有的线程都属于主线程组. public final T ...

  5. HDU 2082 普通型母函数

    分析: 组成单词好说,价值如何体现? 改变指数就行,例如: 这样,组成的单词,指数就是权值,多项式相乘,指数小于50的就OK: #include <bits/stdc++.h> using ...

  6. 融云SDK:获取用户Token的方法

    融云SDK查看ServerAPI里面有个获取Token的方法,本以为只要传三个参数就可以.后来发现,在请求头有几个必须要传的参数,否则服务器返回401(未授权).拿获取Token接口为例子 如图所示, ...

  7. 【转】不错的linux下通用的java程序启动脚本

    虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的通用shell脚本. 只需要修改一些配置变量,就可以用 ...

  8. 到底什么时候需要使用 final

    final: final修饰属性,则该属性不可再次改变,而且在初始化中必须在属性或者是构造方法中其中且中有一个中初始化他 final修饰方法,则该方法不可被重写 final修饰类,则不可被继承 1:当 ...

  9. Spring知识点总结(四)之SpringAOP基础 - 代理设计模式

        1. 分析程序中存在的问题(高内聚,低耦合)        通过springIOC DI) 以及注解的使用,成功解决了在程序中层与层之间出现的耦合的问题,但是在很多地方仍然存在非该层应该实现的 ...

  10. Spring-boot官方案例分析之log4j

    Spring-boot官方案例分析之log4j 运行单元测试分析: @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfigur ...