一、正则表达式

提示:此专题需要多轮复习反复的加深和理解

正则表达式的两种用法:

1)regexp.xxx(string);

2)string.yyy(regexp);

验证用户输入的手机号格式是否合法
var regexp=/^[-]\d{}$/;
var input="";
console.log(regexp.test(input))

正则表达式主要用于表单验证

1、直接量字符

定义一个正则表达式对象可以使用perl风格的直接量语法

/pattern/attributes

说明

直接量字符串左右不能添加‘或者”(引号)

两个/不能省略

参数pattern是一个正则表达式字符串

参数attribute是一个可选的字符串,可以在“g”,“i”和“m”范围内指定,分别用于指定全局匹配、区分大小写的匹配和多行匹配

2、字符类

所有的单个大小写字母、数字都是一个正则表达式,用以匹配单个字符,这个字符与它本身相同

        var regexp=/ipod/;
var data='apple ipod is No.123 cool?';
console.log(regexp.test(data));//false var regexp=/ipod/;
var data='apple ipod is No.123 cool?';
console.log(regexp.test(data));//true

正则表达式有些字符有特殊的语法含义,是不能直接使用的,必须使用\进行转义后才能使用

. \ / * ? + [ ( ) ] { } ^ $ |

位置匹配

^   在/[^123]/  表示匹配除了123的

/^1[123]/   表示包含123的并且以1开头的

$    表示以什么结尾

|     /[123|456]/   表示匹配123或者456其中一个

,    /[123x,]/    表示匹配123x中任意一个

\b    表示匹配字符的边界

\B    匹配字符串的非边界   例子:“his  history  is so”  如果匹配history中的his  /[/bhis/B]

3、重复

正则表达式中可以使用如下特殊字符定义字符的出现频次---量词元字符

重复字符   含义                                  示例
n? 匹配零次或者一次字符n /a?/
n* 匹配零次或者多次字符n /a*/
n+ 匹配一次或者多次字符n /a+/
n{x} 匹配字符n出现x次 /a{}/ /\d{9}/表示数字出现9次
n{x,y} 匹配字符n出现x到y次 /a{,}/
n{x,} 匹配字符n的出现>=x次 /a{,}/

4、选择、分组和引用

范围选择,用于指定一个匹配的范围

语法              含义                                    示例
[abc] 匹配指定集合内的任一个字符 /[]/ [^abc] 匹配不在指定集合内的任意字符 /[^]/ [a-z] 匹配任一个小写字符 /[a-z]/ [-] 匹配任一个数字 /-/ [A-Z] 匹配任一个大写字符 /A-Z/ [A-z] 匹配大写A到消协z的所有字符, /[A-z]/
即A-Z[\]^_`a-z /[--籲]/ exp|exp2 使用|进行条件选择 /ex|Ex|post|Post/ (expl) 使用()指定分组 ------子表达式

正则表达式中可以使用如下元字符引用来进行简化

 语法              含义                             示例
\d 匹配一个数字 /\d/等价于/[-]/
\D 匹配一个非数字 /\D/等价于 /[^-]/
\w 匹配一个数字/字母/下划线 /\w/等价于/[-9a-zA-Z]/
\W 匹配一个非数字/字符/下划线 /\W/等价于/[^-9a-zA-Z]/
\s 匹配一个空白字符(space) /\s/等价于/[\n\r\t\v\f]/
\S 匹配一个非空白字符 /\S/等价于/[^\n\r\v\t\f]/
. 匹配除了回车和换行符的任何单个字符 /./ 等价于 /[^\n\r]/

分组匹配  ,使用()把多个字符组成一个整体,这样的每个整体都会自动获得1、2、3、...这样的分组

()       /(abc){3}/    表示以abc为一组的匹配3组

/(abc)(xvv)(xx)2/  表示匹配(abc)  (xvv)这两个分组

/(aa)(bb)(cc)/2/     表示匹配(bb)这个分组

正则表达式分组编号的用法:

1)直接用在正则表达式中

    /<(\w+)>.*<\/\1>/

2)调用test()方法之后使用

    regexp.test(stuID);

    console.log(RegExp.$1);

3)用在string.re[lace()方法中

    var data="Tome mary john maria";

    var regexp=/(mary|,maria)/ig;

    data.replace(regexp,"$1".toUpperCase());    //Tome MARY john MARIA

5、正则表达式中的属性修饰符

/表达式内容/属性修饰符

属性修饰符可以在下面三个范围内选择

1)i  匹配的时候忽略大小写

2)g  执行全局匹配,找到一次匹配后仍然继续,知道结尾

3)m  执行多汗匹配,会影响^(原本只匹配整个字符串的开头)和$(原来只匹配整个字符串结尾)的含义,匹配每一行的开头和结尾

第四篇、javascript的更多相关文章

  1. 深入理解javascript作用域系列第四篇——块作用域

    × 目录 [1]let [2]const [3]try 前面的话 尽管函数作用域是最常见的作用域单元,也是现行大多数javascript最普遍的设计方法,但其他类型的作用域单元也是存在的,并且通过使用 ...

  2. 深入理解javascript作用域系列第四篇

    前面的话 尽管函数作用域是最常见的作用域单元,也是现行大多数javascript最普遍的设计方法,但其他类型的作用域单元也是存在的,并且通过使用其他类型的作用域单元甚至可以实现维护起来更加优秀.简洁的 ...

  3. 【HANA系列】【第四篇】SAP HANA XS使用服务器JavaScript Libraries详解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第四篇]SAP HANA XS ...

  4. 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  5. EnjoyingSoft之Mule ESB开发教程第四篇:Mule Expression Language - MEL表达式

    目录 1. MEL的优势 2. MEL的使用场景 3. MEL的示例 4. MEL的上下文对象 5. MEL的Variable 6. MEL访问属性 7. MEL操作符 本篇主要介绍Mule表达式语言 ...

  6. 前端第四篇---前端基础之jQuery

    前端第四篇---前端基础之jQuery 一.jQuery介绍 二.jQuery对象 三.jQuery基础语法 四.事件 五.动画效果 六.补充each 一.jQuery简介 1.jQuery介绍 jQ ...

  7. mysql第四篇:数据操作之多表查询

    mysql第四篇:数据操作之多表查询 一.多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment ...

  8. 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

    从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  9. 第四篇 Entity Framework Plus 之 Batch Operations

    用 Entity Framework  进行 增,删,改.都是基于Model进行的,且Model都是有状态追踪的.这样Entity Framework才能正常增,删,改. 有时候,要根据某个字段,批量 ...

  10. 解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译)

    解剖SQLSERVER 第十四篇    Vardecimals 存储格式揭秘(译) http://improve.dk/how-are-vardecimals-stored/ 在这篇文章,我将深入研究 ...

随机推荐

  1. requests 模块入门玩法和高级玩法

    1.安装 pip install requests 2. http://docs.python-requests.org/zh_CN/latest/user/quickstart.html http: ...

  2. keil 中的一些设置

    option for target 'target 1' 中: 第3选项output: select folder for objects :此选项是选择编译时产生的以希望文件,点击选择路径,不然这些 ...

  3. Vue+原生App混合开发手记#1

    项目的大致需求就是做一个App,里面集成各种功能供用户使用,其中涉及到很多Vue的使用方法,单独总结太麻烦,所以通过这几篇笔记来梳理一下.原型图如下: 路由配置 主界面会用到一些原生App方法,比如验 ...

  4. Java编程之路相关书籍(三个维度)

    一.关于Java的技术学习.能够依照以下分三个维度进行学习 : (1)向下发展,也就是底层的方向 建议看<深入Java虚拟机>.<Java虚拟机规范>.<Thinking ...

  5. delphi 无边框窗体常见问题

    实现无边框窗体很简单,直接将窗体的BorderStyle属性设置为bsNone即可.但是这样会引起2个问题: 1.在xp系统下,任务栏鼠标右键点击无法弹出菜单 解决办法:在FormShow中加入这个过 ...

  6. ubuntu 16.04查询文件安装目录

    dpkg -L filename dpkg -l | grep filename whereis filename find / -name filename

  7. Linq系列(7)——表达式树之ExpressionVisitor

    大家好,由于今天项目升级,大家都在获最新代码,所以我又有时间在这里写点东西,跟大家分享. 在上一篇的文章中我介绍了一个dll,使大家在debug的时候可以可视化的看到ExpressionTree的Bo ...

  8. sublime中如何安装vue.js插件,并使代码高亮显示

    前提概要: sublime的下载地址:http://www.sublimetext.com/ notepad++下载地址:https://notepad-plus-plus.org/ .vue的文件在 ...

  9. java jdbc连接数据库,Properties 属性设置参数方法

    今天在整合为数据库发现在配置中实现的赋值方式,可以用代码实现.特记录下共以后参考: 代码:        // 操作数据库        Connection conn; String strData ...

  10. poj1845(二分快速求等比数列模M和)

    Sumdiv Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 17039   Accepted: 4280 Descripti ...