正则表达式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014-2-7 6
正则表达式的规则
普通字符:又称字面量、直接量字 符;

字母、数字、中文字符等;
元字符:在模式的上下文中具有特 殊的意义;

/ | \( ){}[] ^ $ * + ? .
2014-2-7
7
元字符:.
.:可以匹配任何单个字符,除 了换行符(\n);


模式:/snow./ 匹配的字符串:“snowy”、“snown” 等; 模式/3.4/与/3\.4/的区别;
14
元字符:^ $ ——指定匹配的位置(锚)
指定某种模式匹配字符串中的某个 位置:

^:符号^放到模式之前,就可指定该 模式只匹配字符串的开头;
• /^Script/匹配“Scripting”;

$:符号$放到模式之后,就可指定该 模式只匹配字符串的末尾;
• /gold$/匹配“I like gold”;


若模式后有g,则String对象中每个 匹配的子字符串都将被替换; var str="snow snows snowy snowing snowed"; str.replace(/snow/,"rain"); document.write("str1=“+str);
20
2014-2-7
String对象的方法

2014-2-7
10
JS中预定义的字符类
JavaScript中预定义了一些字符类, 可以通过名称来引用; /\d\.\d\d/ /\D\d\D/ /\w\w\w/
2014-2-7
11
JS中预定义的字符类
名称 \d \D \w \W \s \S
2014-2-7
等价模式 [0-9] [^0-9] [A-Za-z0-9_] [^A-Za-z0-9_] [\r\t\n\f] [^\r\t\n\f]
2014-2-7
23
正则表达式在JS中的应用举例二:
通过表单输入你的身份证号码, 从中获取出生年月日;

JS中的事件处理;
• 关键是定义事件处理函数 –先获得表单文本框用户输入的 身份证号码; –再判断它是否与模式匹配;

模式匹配;
2014-2-7
24
<form action="" id="myform" onsubmit="getYourBirthDate()"> <p>请输入你的身份证号码:<input type="text" name="number" id="number"/><br/> <input type="submit" value=" 提交"/></p> </form> function getYourBirthDate(){ var idNum=document.getElementById("number").value; var ok=idNum.search(/^\d{6}([12][09]\d{2})([01]\d)([0123 ]\d)\d{4}$/); if(ok==0){ var birth=idNum.match(/([12][09]\d{2})([01]\d)([0123]\d) /g); alert("你的出生年月日为:"+birth);return true;} else {alert("你输入的身份证号码不合要求!\n请重新输 入!");return false;}} 2014-2-7 25
2014-2-7
13
元字符: * + ?
模式中某一部分的重复:

方法2:符号限定符*、+、?; • *:零次或多次重复; • +:一次或多次重复; • ?:零次或一次重复; • 举例:/x*y+z?/ /\d+\.\d*/ /[A-Za-z]\w*/
限定符与预定义的字符类一起使用:

2014-2-7
2014-2-7 5
正则表达式的应用?
正则表达式通常被用来检索或替换 那些符合某个模式的文本内容。 第一个实用应用程序:Unix中的 qed编辑器; Unix工具、Windows开发工具包、 主流操作系统、主流的开发语言 (PHP、C#、Java、C++、VB、 Javascript、Rubby等)、数以亿 万计的各种应用软件中,都可以看 到正则表达式优美的舞姿;
专题——正则表达式 (Regular Expression)
主要内容
什么是正则表达式 正则表达式的规则

元字符 字符类
正则表达式在JS中的应用
2014-2-7
2
2014-2-7
3
举例:
查找一篇英文文章中所有的单词“hi”: 使用正则表达式/hi/,由两个字符组成, 前一个字符是h,后一个是i; 如果忽略大小写:“HI”、“Hi”、“hI” 使用正则表达式/hi/i 精确地查找“hi”这个单词: 使用正则表达式/\bhi\b/ 以0开头,然后是三个数字,然后是一个连 字号“-”,最后是8个数字
匹配邮件地址是否合法:

匹配腾讯QQ号:

2014-2-7
26
2014-2-7
17
正则表达式在JS中的应用
主要用于文本的模式匹配,包括文 本的查找、替换和格式化; JS中模式匹配有两种方式:

一种是基于RegExp对象; 一种是基于String对象;
2014-2-7
18
String对象的方法
search(模式):以模式作为参数, 返回第一个与之匹配的子串开始的 位置,若没有与之匹配的子串,返 回-1;
匹配的内容 一个数字 一个非数字 一个单字字符 一个非单字字符 一个空白字符 一个非空白字符
12
元字符:{}
模式中某一部分的重复:

方法1:在花括号中附加一个数字限定符; • {n}:一个字符的n次重复; • {m,n}:一个字符的m到n次重复; • {m,}:一个字符不小于于m次的重复; • 模式/xy{3}z/匹配"xyyyz" ; • /u{2,4}/匹配"uu" "uuu" "uuuu" ; • /u{2,}/匹配"uu"、"uuu"等;


var str=“Hi,High,History,CHina are all English words.” str.search(/Hi/);
2014-2-7
19
String对象的方法
replace(模式,替换字符串): 替换String对象中与给定模式匹配 的某个子字符串,返回值为替换后 的新串;

JS中的事件处理;
• 关键是定义事件处理函数 –先获得表单文本框用户输入的 电话号码; –再判断它是否与模式匹配;

模式匹配;
2014-2-7
22
<form action="" id="myform" onsubmit="testPhoneNumber()"> <p>请输入你的家庭电话:<input type="text" name="number" id="number"/><br/> <input type="submit" value="提交"/></p> </form> function testPhoneNumber(){ var phone=document.getElementById("number").value; var ok=phone.search(/^\d{3,4}-\d{7,8}$/); if(ok==0) {alert("It is a legal phone number!");return true;} else{ alert("It is not a legal phone number!"); return false;}}
match(模式):返回值为一个数 组;

wenku.baidu.com
若模式中带有g,数组为字符串中所 有与模式匹配的子字符串; 若模式中不带有g,数组的第一个元 素为字符串中第一个与模式匹配的子 字符串,数组剩余的元素为与模式括 号中的部分匹配的元素;
2014-2-7
21
正则表达式在JS中的应用举例一:
通过表单输入你的家庭电话, 测试一下格式是否正确;

\b:匹配的是单词的边界;
• /^[Jj]ava[Ss]cript\b/匹配 “JavaScript is fun”;

2014-2-7
\B:匹配不是单词边界的位置;
15
元字符:i、g、m ——模式修饰符
修饰符可以放到模式(/)之后, 用于修改模式的应用方式; 修饰符i:模式中的字母既可以匹 配字符串中的小写字母又可以匹配 大写字母;

/Watermelon/i:watermelon、 WaterMelon等;
2014-2-7
16
元字符:i、g、m ——模式修饰符
修饰符g:全局匹配,即应当找出 被检索字符串的所有匹配; 修饰符m:多模式匹配,针对多行 字符串,匹配每行中的内容;

/JavaScript/gm JavaScript is easy,and JavaScript is fun.\nJavaScript is the best language.
2014-2-7
8
元字符:[]
字符类:一个由普通字符组成的集合, 一个字符类和它包含的任何单个字符 都匹配;

格式:把需要的字符放到方括号中; 模式/[abc]/可以匹配a、b、c; 模式/[a-z]/可以匹配a到z之间任意一 个小写字母;
2014-2-7
9
元字符:[]
字符类:
若字符类中第一个字符是“^”, 含义为反转指定的字符集; 模式/[^exam]/可以匹配除了e、 x、a、m之外的所有字符;

2014-2-7
/0\d{3}-\d{8}/
4
什么是正则表达式?
正则表达式是一种具有递归结构的 字符串表达式,它描述了一种字符 串匹配的模式; 1956年, 美国一位名叫Stephen Kleene的数学家,发表了一篇题是 《神经网事件的表示法》的论文, 引入了正则表达式的概念; 一个正则表达式,就是用某种模式 去匹配一类字符串的一个公式。
相关文档
最新文档