JavaScript巩固与加强(五)正则

JavaScript巩固与加强(五)

目录

JavaScript巩固与加强(五)... 1

一、正则表达式... 3

1、历史起源... 3

2、什么是正则表达式... 3

3、应用场景... 3

4、快速入门... 4

1)查找一个字符串中是否具有数字“8”. 4

2)查找一个字符串中是否具有数字... 4

3)查找一个字符串中是否具有非数字... 4

二、正则对象... 4

1、创建正则对象... 5

2、探讨正则对象从何而来... 5

3、匹配模式... 6

4、使用正则对象... 6

1)RegExp类... 6

2)String类... 6

5、问题... 8

三、几个常用概念... 8

1、子表达式... 8

2、捕获... 9

3、反向引用... 9

4、原理图... 9

5、思考题... 9

6、练习... 10

四、exec方法与子表达式... 11

1、使用exec方法获取数据... 11

2、exec方法与子表达式... 11

五、正则表达式... 12

1、开发小技巧... 12

2、正则表达式构成... 12

3、查什么(元字符——匹配符)... 13

4、查多少(元字符——限定符)... 14

5、从哪查(元字符——定位符)... 15

6、转义符... 15

7、选择匹配符... 16

8、特殊用法... 16

9、结巴程序... 17

六、编写正则工具箱... 19

1、设计html页面... 19

2、编写Javascript代码... 20

七、Javascript作业... 21

1、省市二级联动... 21

2、时钟程序... 21

3、扩充Array与Number系统类... 22

4、贪吃蛇游戏... 23

一、正则表达式

1、历史起源

1956年,美国的两位神经生理方面的科学家研究了一种方法:通过数学符号形式来描述神经元系统。

肯·汤马森(Unix系统之父):把这种符号引入到Unix系统中的QED编辑器中。

正则表达式本身是一门独立的语言,可以被大多数编程语言所使用,如Javascript、PHP、Java

MySQL:SQL语言

正则表达式:大多数编程语言

2、什么是正则表达式

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

精准匹配:

$sql = “select * from goods where title=’联想780’”;

模糊匹配:

$sql = “select * from goods where title like ‘%联想%’”;

3、应用场景

1)信息隐藏 张*三 139*****92

2)信息过滤 上海、政府(sh、zf)

3)信息采集 l8675o28893

4)信息查询 高亮显示

4、快速入门

1)查找一个字符串中是否具有数字“8”

运行结果:true

2)查找一个字符串中是否具有数字

运行结果:true

3)查找一个字符串中是否具有非数字

运行结果:false

二、正则对象

在使用正则表达式之前要有一个前提,必须创建一个正则对象。

1、创建正则对象

1)隐式创建

基本语法:

var 正则对象 = /正则表达式/匹配模式;

2)显示创建(直接实例化)

var 正则对象 = new RegExp(‘正则表达式’,’匹配模式’);

说明:两者在功能上完全一致,都是创建RegExp类的实例(正则对象),唯一区别在于语法不同。

var reg = /\d\d\d/gi;

var reg = new RegExp(‘\\d\\d\\d’,’gi’);

2、探讨正则对象从何而来

通过以上程序证明可知:reg(正则对象)是系统类RegExp实例化而来的。

3、匹配模式

g:(global)全局,全局匹配

i:(ignore)忽略大小写

4、使用正则对象

1)RegExp类

test(str) :判断字符串是否含有指定模式的字符,返回布尔类型值(true,false)

exec(str) :获取字符串中指定模式的子串

2)String类

search(reg) :返回指定模式的字符在字符串出现的位置(默认从0开始)

match(reg) :以数组形式返回指定模式的子串

replace(reg,’替换后的字符’) :替换指定模式的字符串

split(reg) :以指定模式的字符分割字符串,返回数组

例1:使用正则对象6大方法

html代码

Javascript代码

运行效果:

5、问题

以上代码在不添加15行代码时,最后一个输出语句结果为false,原因:

在正则对象中如果使用了匹配模式g(全局匹配),当系统查找到满足条件的结果时,将在当前位置放入一个标记,当下次查询时,系统将自动从标记位置查起,所以最后一个结果为false,在开发过程中如果遇到以上问题,可以通过正则对象.lastIndex = 0的形式,人为置空标记为0,代表下次查询将从开始位置查起。

三、几个常用概念

1、子表达式

在正则表达式中,通过一对圆括号括起来的内容,我们就称之为子表达式

var str = ‘adsfasdfas1234dfasdfasdfasdfasdfasdf’;

var reg = /\d(\d)\d\d\/gi;

2、捕获

在运行过程中,子表达式所匹配到的内容会被系统所捕获,并放入系统的缓冲区中

3、反向引用

在正则表达式可以通过\n(n大于等于1)来引入缓存区中的内容

4、原理图

5、思考题

l 查找连续的四个数字,如:3569

答:var reg = /\d\d\d\d/gi;

l 查找连续的相同的四个数字,如:1111

答:var reg = /(\d)\1\1\1/gi;

l 查找数字,如:1221,3443

答:var reg = /(\d)(\d)\2\1/gi;

l 查找字符,如:AABB,TTMM

\w:代表字符

答:var reg = /(\w)\1(\w)\2/gi;

l 查找连续相同的四个数字或四个字符

答:var reg = /(\w)\1\1\1/gi;

6、练习

var str = ‘asdfaskd<h1>Hello</h1>faswerw<div>RegExp</div>er23234asdfasdfasdf’;

通过正则表达式获取字符串中的所有HTML代码

Hello

RegExp

运行效果:

四、exec方法与子表达式

1、使用exec方法获取数据

运行结果:

2、exec方法与子表达式

运行结果:

说明:当exec遇到了子表达式:

第一次运行时,生成结果会自动转化为数组类型,

数组中的第0个元素就是我们匹配的最终结果 row[0]=123;

数组中的第1个元素就是我们子表达式所匹配的结果row[1]=23

第二次运行时,生成结果会自动转化为数组类型

数组中的第0个元素就是我们匹配的最终结果 row[0]=456

数组中的第1个元素及时我们子表达式所匹配的结果row[1] = 56

第三次运行时,依次类推

五、正则表达式

1、开发小技巧

① 确定我们需要查什么

② 确定我们需要查多少

③ 确定我们从哪查

2、正则表达式构成

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

① 普通字符

② 特殊字符(元字符)\d \w

3、查什么(元字符——匹配符)

字符匹配符用于匹配某个或某些字符

在正则表达式中,通过一对方括号括起来的内容,我们称之为“字符簇”

[a-z] 匹配小写字母a-z中的任一字符

[A-Z] 匹配大写字母A-Z中的任一字符

[0-9] 匹配数字从0-9中的任一数字

[0-9a-z] 匹配数字0-9或小写a-z中的任一字符

[0-9a-zA-Z] 匹配数字0-9或字母a-z中的任一字符

[abcd] 匹配字母abcd中的任一字符

[1234] 匹配数字1234中的任一数字

在字符簇中,^代表取反的含义

[^a-z] 匹配除a-z以外的任一字符

[^0-9] 匹配除0-9以外的任一字符

[^abcd] 匹配除字母abcd以外的任一字符

\d :匹配一个数字字符 [0-9]

\D :匹配一个非数字字符 [^\d]

\w :匹配包括下划线的任何单词字符 [0-9a-zA-Z_]

\W :匹配任何非单词字符 [^\w]

\s :匹配任何空白字符 制表符、空格、回车

\S :匹配任何非空白字符 [^\s]

. :匹配除 "\n" 之外的任何单个字符

示例代码:

4、查多少(元字符——限定符)

限定符可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。

* 匹配前面的子表达式零次或多次 0到多 {0, }

+ 匹配前面的子表达式一次或多次 1到多 {1,}

? 匹配前面的子表达式零次或一次 0或1 {0,1}

{n} 匹配确定的 n 次

{n,} 至少匹配n 次

{n,m} 最少匹配 n 次且最多匹配 m 次

示例代码:

贪婪匹配原则:

在正则表达式中,我们把能匹配多的就不匹配少的这种情况就称之为“贪婪匹配”,默认正则表达式采用的就是贪婪匹配原则。

非贪婪匹配原则:

在正则表达中,可以通过?问号把一个正则表达式由贪婪匹配转化为“非贪婪匹配”

5、从哪查(元字符——定位符)

定位符可以将一个正则表达式固定在一行的开始或结束。也可以创建只在单词内或只在单词的开始或结尾处出现的正则表达式。

^ 匹配输入字符串的开始位置

$ 匹配输入字符串的结束位置

\b 匹配一个单词边界

\B 匹配非单词边界

例1:通过正则表达式匹配11位手机号码

例2:单词边界与非单词边界

6、转义符

在Javascript代码中,可以通过反斜杠\对特殊字符进行转义

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

7、选择匹配符

| 可以匹配多个规则

8、特殊用法

(?=) :正向预查

(?!) :负向预查

(?:) :输出结果但不捕获

9、结巴程序

我...我是是..一个个...帅帅帅帅...哥!

通过正则表达式进行转化到如下语句:

我是一个帅哥!

1)第一步:过滤掉所有的.点号

运行结果:

2)去重,过滤掉所有重复内容,只保留一个

在replace方法中,第二个参数有一种特殊用法,$n(n大于等于1的正整数)可以直接引用系统缓存区的内容。

六、编写正则工具箱

1、设计html页面

运行结果:

2、编写Javascript代码

运行效果

七、Javascript作业

1、省市二级联动

代码参考zuoye01.html

运行效果:

2、时钟程序

运行效果:

3、扩充Array与Number系统类

var arr = [10,20,30,40,50];

arr.find(30); //2

var i=10;

i.sum(20,30,40,50); //150

4、贪吃蛇游戏

时间: 2024-10-10 23:12:00

JavaScript巩固与加强(五)正则的相关文章

Javascript 事件对象(五)事件捕获

事件捕获: 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>无标题文档</title> 6 <style> 7 div {padding: 50px;} 8 #div1 {background: red;

javascript基础学习(五)

javascript之函数 学习要点: 函数的介绍 函数的参数 函数的属性和方法 系统函数 一.函数的介绍 1.函数就是一段javascript代码.可以分为用户自定义函数和系统函数.   如果一个函数是javascript内置的函数,就称为系统函数.如果函数是自己编写的函数,就是自定义函数. 2.在javascript用function来定义一个函数.function 函数名(参数1,参数2,...){<语句块>  return 返回值} (PS:return语句可以省略) 3.函数的嵌套定

JavaScript学习总结(十五)——Function类

在JavaScript中,函数其实是对象,每个函数都是Function类的实例,既然函数对象,那么就具有自己的属性和方法,因此,函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定. 一.函数的声明 方式一:常规方式 1 function sum1(num1,num2){ 2 return num1+num2 3 } 方式二:函数表达式 1 var sum2=function(num1,num2){ 2 return num1+num2; 3 }; 方式三:动态创建函数(这种方式用得不多)

JavaScript高级程序设计(十五)

表单脚本 通过点击提交按钮提交表单时,浏览器会在将请求发送给服务器之前触发submit事件.这样,我们就有机会验证表单数据,并据以决定是否允许表单提交.阻止这个事件的默认行为就可以取消表单提交. 在JavaScript中,以编程方式调用submit()方法也可以提交表单,以编程方式提交表单时,不会触发submit事件,因此要记得在调用此方法之前先验证表单数据. 提交表单时可能出现的最大问题,就是重复提交表单.解决这一问题的办法有两个:在第一次提交表单后就禁用提交按钮,或者利用onsubmit事件

Javascript学习总结-面向对象-(五)

1. 面向对象 JavaScript面向对象的脚本语言,此时开发者在开发的时候需要找对象,默认提供了内置的对象.也可以根据开发者的需求自己定义对象. 1.1.     基本数据类型包装类 为了便于操作基本类型值,ECMAScript 提供了3个特殊的引用类型:Boolean,Number,String.它们是引用类型.当读取基本数据类型时,后台就会创建一个对应的基本包装类对象,所以我们在操作基本数据类型时,可以直接调用一些方法. 1.1.1.  String //通过构造函数创建String 对

How Javascript works (Javascript工作原理) (十五) 类和继承及 Babel 和 TypeScript 代码转换探秘

个人总结:读完这篇文章需要15分钟,文章主要讲解了Babel和TypeScript的工作原理,(例如对es6 类的转换,是将原始es6代码转换为es5代码,这些代码中包含着类似于 _classCallCheck 和 _createClass这样的函数,而这些函数已经在Babel和TypeScript的标准库中预先定义好了,然后进行处理). 顺便温习了Object.create这个方法,  比如有一个obj:{name:'是ho',f:function(){alert(1)}} var a = O

《你不知道的JavaScript》整理(五)——值与原生函数

一.值 1)数字 JavaScript只有一种数值类型:number(数字),包括"整数"和带小数的十进制数. //数字的语法 var a = 5E10; // 50000000000 a.toExponential(); // "5e+10" var b = a * a; // 2.5e+21 var c = 1 / a; // 2e-11 var d = 0.42; var e = .42; //数字前面的0可以省略 var f = 42.; //小数点后小数部

javaScript之this的五种情况

this一直是JavaScript研究的难题,特别是在笔试和面试中的各种程序分析问题中,也常常会被问到.下面来看一看this被运用的五中情况: (1)       纯粹的函数调用 函数最普通用法,此时属于全局调用,函数内this指向全局对象window. 示例一: var x=20; function test(){ var x = 10; console.log(this.x) } 输出:20,因为函数test执行环境为window. 示例2: var x=20; function test(

JavaScript学习总结(五)原型和原型链详解

转自:http://segmentfault.com/a/1190000000662547 私有变量和函数 在函数内部定义的变量和函数,如果不对外提供接口,外部是无法访问到的,也就是该函数的私有的变量和函数. <script type="text/javascript"> function Box(){ var color = "blue";//私有变量 var fn = function() //私有函数 { } } </script> 这

JavaScript之基础-10 JavaScript 正则表达式(概述、定义正则、RegExp对象、用于模式匹配的String方法)

一.JavaScript 正则表达式概述 正则表达式概述 - 正则表达式(Regular Expression): 由一些普通字符和特殊字符组成的,用以描述一种特定的字符规则的表达式 - 正则表达式常用于在一段文本中搜索.匹配或替换特定形式的文本.如:词语出现频率统计.验证字符串是否符合邮件格式.屏蔽一篇帖子中的限制性词语等 正则表达式初体验 - 验证用户输入的手机格式是否合法 二.JavaScript 定义正则表达式 普通字符 - 所有的单个大小写字母.数字都是一个正则表达式,用以匹配单个字符