Javascript高级程序设计——9.正则表达式(1)
来源:互联网 发布:淘宝怎么搜假手表 编辑:程序博客网 时间:2024/04/30 06:16
1、正则表达式
(1)定义:描述字符模式的对象
ECMAScript的RegExp类表示正则表达式
(2)作用:验证客户端的输入函数,即在用户填写完表单单击按钮后,表单被发送到服务器,在服务器端通 常用php,asp.net语言对其进行进一步的验证。
2、创建正则表达式(2种)
(1)new关键字
(2)采用字面量方式(打印出来的为字面量)
var box=new RegExp('Box'); //第一个参数是模式字符串;alert(box); //结果——"/Box/"//两个反斜杠就是正则表达式字面量表示方法;
var box=new RegExp('Box','gi'); //第二个参数为可选;alert(box);
(3)模式修饰符(可选参数)
a、i——忽略大小写
b、g——全局匹配
c、m——多行匹配
var box='/Box/';alert(box);
3、测试正则表达式
A、RegExp
2种:test()/exec()
结果——均返回布尔值true、false
(1)test():用于匹配字符串
var pattern=new RegExp('Box'); //模式;var str='box';alert(pattern.test(str));
结果:false,由于大小写不一致var pattern=new RegExp('Box','i'); //不区分大小写;var str='box';alert(pattern.test(str));
结果:true,一句话匹配var pattern=/Box/i; //使用字面量方式var str='box';alert(pattern.test(str));
结果:true(2)exec():用于匹配数组
(若匹配到,则返回数组;若没匹配到,返回null)
var pattern=/Box/i; //使用字面量方式var str='sss';alert(pattern.test(str));
结果:如果没匹配到,返回nullB、String对象
4种:match()——返回pattern中子串或null
replace()——用新元素替换旧元素
search()——返回字符串中开始的位置
split()——返回字符串按指定pattern拆分的数组
(1)match()获取数组
a、ig:全局
var pattern=/Box/ig; //全局搜索;var str='This is a Box!This is a Box!';alert(str.match(pattern)); //将所有匹配到的字符串组合成数组返回;
b、i:不是全局
var pattern=/Box/i; //没有开启全局搜索;var str='This is a Box!This is a Box!';alert(str.match(pattern)); //匹配到第一个字符串返回数组;
(2)search查找匹配数组
var pattern=/xox/i; //没有开启全局搜索;var str='This is a Box!This is a Box!';alert(str.search(pattern)); //找不到匹配,返回-1;
(3)replace替换数组
var pattern=/Box/i; //没有开启全局搜索;var str='This is a Box!This is a Box!';alert(str.replace(pattern,'Tom')); //返回替换的字符串,只替换了第一个;
var pattern=/Box/ig; //全局搜索;var str='This is a Box!This is a Box!';alert(str.replace(pattern,'Tom')); //返回替换的字符串,替换了两个;
(4)split表示拆分数组
4、RegExp属性
(1)静态属性
var pattern=/(g)oogle/;var str='This is google';pattern.test(str); //执行一下;alert(RegExp.input); //This is google!alert(RegExp.leftContext); //This isalert(RegExp.rightContext); //!alert(RegExp.lastMatch); //goole;(匹配最后一个)alert(RegExp.lastParen); //g
(2)实例属性
google:全局ignoreCase:区分大小写
lastIndex:上次匹配位置
var pattern=/google/ig; alert(pattern.global); //true,是否全局了;alert(pattern.ignoreCase); //true,是否忽略大小写;alert(pattern.mulyiline); //false,是否换行;alert(pattern.lastIndex); //0,下次匹配位置;alert(pattern.source);//google,原字符串;
5、获取控制
(1)定义:正则表达式中的元字符是包含特殊含义的字符。
(2)元字符可以控制匹配模式的方式,反斜杠后的元字符将失去其特殊含义
a、字符类
(1)单个字符或数字
.:点符号表示匹配除换行符外的任意字符
var pattern=/g..gle/;var str='google';alert(pattern.test(str));
(2)重复字符
x*:星号*表示前边那个字符x重复的0个或多个
x+:星号+表示前边那个字符x重复的1个或多个
x.?:问号.?表示前边的字符x重复的0个或1个
x{a,b}:{a,b}表示匹配前边的字符x重复(a,b)次
var pattern=/go{2,4}gle/;var str='gooole';alert(pattern.test(str)); //true
var pattern=/go{3}gle/; //o{3}表示限定为3个var str='goooole'; alert(pattern.test(str)); //true
var pattern=/go{3,}gle/; //o{3,}表示限定为3个及3个以上var str='goooole'; alert(pattern.test(str)); //true
(3)单个字符
[a-z]:表示26个小写字母,任意一个都可以匹配
[A-Z]:表示26个大写字母,任意一个都可以匹配
(注意://i有i时,不限定大小写,为true)
var pattern=/[a-z]oogle/i; //[a-z]表示匹配小写,有i后缀表示可不区分大小写var str='Goole'; alert(pattern.test(str)); //true,大写G,由于有后缀i
var pattern=/[a-zA-Z0-9]oogle/; var str='google'; alert(pattern.test(str)); //true
var pattern=/[0-9]oogle/; //[0-9]表示匹配数字0-9var str='6oole'; alert(pattern.test(str)); //true
var pattern=/[^0-9*]oogle/; //[^0-9*]表示匹配任意个非数字0-9var str='google'; alert(pattern.test(str)); //true
var pattern=/[a-zA-Z0-9]oogle/; var str='google'; alert(pattern.test(str)); //true
组合类型3——/^[a-z]oole[0-9]$/表示以a-z开头,以0-9结尾
var pattern=/^[a-z]oole[0-9]$/;var str='google'; alert(pattern.test(str)); //true
d、元字符
var pattern=/google{4,8}$/; //表示e重复4-8次 var str='googleeeee';alert(pattern.test(str));
var pattern=/(google){4,8}$/; //分组,将google看成一个字符;var str='googlegooglegooglegoogle';alert(pattern.test()); //true
var pattern=/8(.*)8/;var str='This is a 8google8';document.write(str.replace(pattern,'<strong>$1</strong>'));
var pattern=/[a-z]+/; //+号表示使用了贪婪模式;var str='asdf';alert(pattern.test(str)); //所有字符串都变成了1;
var pattern=/[a-z]+?/; //+?号表示使用了惰性模式;var str='asdf';alert(pattern.test(str)); //只有第一个字符串都变成了1;
var pattern=/8(.*)8/;var str='8google8 8google8 8google8';document.write(str.replace(pattern,'<strong>$1</strong>'));
结果:<strong>google8 8google8 8google</strong>var pattern=/8(.*?)8/; //运用了惰性var str='8google8 8google8 8google8';document.write(str.replace(pattern,'<strong>$1</strong>'));
结果:<strong>google</strong>- Javascript高级程序设计——9.正则表达式(1)
- Javascript高级程序设计——9.正则表达式(2)
- 《JavaScript高级程序设计》笔记——正则表达式
- 《JavaScript高级程序设计》——函数表达式
- JavaScript高级程序设计学习笔记6:正则表达式
- JavaScript高级程序设计(五)函数表达式
- javascript高级程序设计(函数表达式)
- 读书笔记—JavaScript高级程序设计(一)
- 重读《JavaScript高级程序设计》——读书笔记(1)
- JavaScript高级程序设计——知识点整理(Part 1)
- JavaScript高级程序设计— 转换
- javascript正则表达式高级篇
- Javascript—正则表达式
- Javascript—正则表达式
- javascript 高级程序设计(一) 正则表达 RegExp实例属性
- 学习《JS高级程序设计》(5)——正则
- JavaScript高级程序设计(读书笔记)之函数表达式
- C#高级程序设计(八)——Lambda表达式
- 计算机网络之网络层-路由器和网际协议-DHCP
- Leetcode 96. Unique Binary Search Trees[medium]
- cmd 组合命令和管道命令的使用
- 课堂总结
- pandas的数据结构-Series
- Javascript高级程序设计——9.正则表达式(1)
- PHP 全局变量 - 超全局变量解读
- robotframework使用之浏览器打不开,报错'Capture Page Screenshot' could not be run on failure: No browser is open
- JavaWeb学习笔记:错误及解决方法收录
- 蛇形矩阵
- 【洛谷】P1567 统计天数
- float 和 double 的区别
- BP神经网络模型与学习算法
- Git--提交项目到GitHub流程