第四篇、javascript
一、正则表达式
提示:此专题需要多轮复习反复的加深和理解
正则表达式的两种用法:
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的更多相关文章
- 深入理解javascript作用域系列第四篇——块作用域
× 目录 [1]let [2]const [3]try 前面的话 尽管函数作用域是最常见的作用域单元,也是现行大多数javascript最普遍的设计方法,但其他类型的作用域单元也是存在的,并且通过使用 ...
- 深入理解javascript作用域系列第四篇
前面的话 尽管函数作用域是最常见的作用域单元,也是现行大多数javascript最普遍的设计方法,但其他类型的作用域单元也是存在的,并且通过使用其他类型的作用域单元甚至可以实现维护起来更加优秀.简洁的 ...
- 【HANA系列】【第四篇】SAP HANA XS使用服务器JavaScript Libraries详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第四篇]SAP HANA XS ...
- 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- EnjoyingSoft之Mule ESB开发教程第四篇:Mule Expression Language - MEL表达式
目录 1. MEL的优势 2. MEL的使用场景 3. MEL的示例 4. MEL的上下文对象 5. MEL的Variable 6. MEL访问属性 7. MEL操作符 本篇主要介绍Mule表达式语言 ...
- 前端第四篇---前端基础之jQuery
前端第四篇---前端基础之jQuery 一.jQuery介绍 二.jQuery对象 三.jQuery基础语法 四.事件 五.动画效果 六.补充each 一.jQuery简介 1.jQuery介绍 jQ ...
- mysql第四篇:数据操作之多表查询
mysql第四篇:数据操作之多表查询 一.多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment ...
- 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)
从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
- 第四篇 Entity Framework Plus 之 Batch Operations
用 Entity Framework 进行 增,删,改.都是基于Model进行的,且Model都是有状态追踪的.这样Entity Framework才能正常增,删,改. 有时候,要根据某个字段,批量 ...
- 解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译)
解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译) http://improve.dk/how-are-vardecimals-stored/ 在这篇文章,我将深入研究 ...
随机推荐
- viewDidLayoutSubviews在ios7上导致应用崩溃
在ios8中使用viewDidLayoutSubviews,应用正常运行,没有问题,但是应用在ios7上运行的时候,报错,导致应用崩溃,错误信息类似: Cannot find executable f ...
- 用Scratch2.0源码定制一个自己的编辑器
用Scratch2.0源码定制一个自己的编辑器,换成自己的软件名称和图标,添加中文字体,修复汉化错误等等1.准备:下载Scratch2.0源码.安装开发工具Adobe Flash Builder4.7 ...
- Laravel5.4使用Memcached缓存
修改默认的缓存驱动 Laravel默认的缓存驱动是file,想要切换为Memcached需要修改.env文件.把CACHE_DRIVER=file改为CACHE_DRIVER=memcached,改好 ...
- HTML5 2D平台游戏开发#9蓄力技
在很多动作游戏中,玩家操控的角色可以施放出比普通攻击更强力的蓄力技,一般操作为按住攻击键一段时间然后松开,具体效果像下面这张图: 要实现这个操作首先要记录下按键被按住的时间,初始是0: this.sa ...
- Swift迎来了1.0 GM 版(2014.09.09)
2014年6月2日,swift开发团队将swift语言公之于众.而2014年9月9日迎来了swift的第二个里程碑,swift1.0版本号(GM),这意味着无论你的应用有一部分功能是用swift写的, ...
- SQLSERVER---- 通过位运算更改标志位
当给多个中心传输数据时,怎么标记哪些单位推送了,哪些单位没有更新,如果单独设置一个字段,一来说,扩展不足,另外会造成数据库冗余,这里可以采用SQLSERVER的位运算. 比如说,更新标志位为0,长度为 ...
- IE下object元素遮挡div表单
目前遇到这样的一个问题: 我用ActiveX插件做了一个C#的播放器,要将这个插件放到web浏览器中,然后可以通过前台页面来控制视频的播放,暂停还有回放,这个时候发现object的onclick事件无 ...
- 最小生成树——Kruskal(克鲁斯卡尔)算法
[0]README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 Kruskal(克鲁斯卡尔)算法 的idea 并用 源代码加以实现: 0.2)最小生成树的基础知识,参见 ...
- InitialContext和lookup
http://wxg6203.iteye.com/blog/680830 最近因为工作需要开始学习Ejb3,遇到了一个让我很郁闷的事情,做一下小小的总结——小心new InitialContext() ...
- redis-windows和linux下安装
Window 下安装 下载地址:https://github.com/dmajkic/redis/downloads. 下载到的Redis支持32bit和64bit.根据自己实际情况选择,将64bit ...