JavaScript(3)—— 正则表达式
---恢复内容开始---
正则表达式
这是写的正则表达式,正则表达式的点比较多,也比较细。所以有些地方我们得注意的比较多。正则表达式在JS中是很重要的一个部分,其中他的语法都得牢记。不过最好还是理解性记忆会比较好。额,好像没啥可以说的了,好好加油。努力多点进度,,恩。
【正则表达式】
使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。也就是按照某种规则(正则表达式)去匹配符合条件的字符串。
【语法】
在JS中,通过内置对象RegExp支持正则表达式。
有字面量跟构造函数这两种方式实例化RegExp对象。
字面量:语法:var 变量=/正则表达式文本/修饰符(g/i/m);
g:global,全文搜索,默认搜索到第一个结果停止;
i: ingore case,忽略大小写,默认大小写敏感;
m:multiple lines,多行搜索;
如:var reg=/\bis\b/g;(其中\bis\b代表搜索is)
构造函数:语法: var 变量=RegExp('正则表达式文本','修饰符(g/i/m)');
【其他】
元字符:在正则表达式中含有特殊含义的非字母字符。如\b代表的单词边界。
特殊字符(如 *,+,$,^,|,\,(),{},[])这些元字符必须用右斜线‘\’来转义。
字符类:一般情况下,正则表达式一个字符对应字符串一个字符。若要匹配多项,可以用元字符[]来构建一个简单的类(符合某些特征的对象,甚至是一个泛指,而不是特指)。
如:要匹配abc字母,就可以用[abc],把字母a,b,c归为一类,表达式就可以同时匹配这三个字符。
字符类取反:用^来表示,如[^abc],就是匹配除字母a,b,c之外的字符。
范围类:就是匹配这一范围类的字符,用[];如:[a-z],代表的就是匹配小写字母a到z的字符,包括a跟z,同义,[0-9]代表匹配数值0-9的任意字符,范围类内部可以连写,所以[a-zA-Z0-9]代表匹配大小写字母跟数字的一个范围类。
预定义类:‘.’ ‘ 除了回车符跟换行符之外的所有字符’
‘\d’ '数字字符'
'\D' '非数字字符'
'\s' '空白符'
'\S' '非空白符'
'\w' '单词字符(字母、数字、下划线)'
'\W' '非单词字符'
如:ab[0-9][^\r\n]就如同ab\d.(匹配的是数字及除了回车符跟换行符的任意字符)
边界:就是在正则表达式中决定开头、结尾的字符。如
‘^’ ‘ 以***开始’
‘$’ '以***结尾'
'\b' '单词边界'
'\B' '非单词边界'
量词:匹配一个出现n次的字符串。如:
‘?’ ‘出现零次或一次’
‘+’ '至少出现一次'
'*' '出现任意次'
'{n}' '出现n次'
‘{n,m}’ ‘ 出现n到m次’
‘{n,}’ '至少出现n次'
贪婪模式(默认):尽可能多的匹配。如:'12345678'.replace('/\d{3,6}/g',X)则会变成X78;
非贪婪模式:让正则表达式尽可能少的匹配。在量词后面加上?即可。如;'12345678'.replace('/\d{3,6}?/g',X)则会变成XX78;
分组:让一个单词hello匹配三次,并不是hello{3}(这是在hell紧挨的字符(即o)匹配三次)。所以得用()分组,即变为(hello){3}。而若想忽略分组,则在()中添加?:即可。
或(|):如:'helloword'.replace('hello|word','X')的匹配结果为XX;而'helloper'.replace('hel(lo|p)er','X')的匹配结果为XX。
反向引用:如:想将1997-11-21换成11/21/1997,位置会发生变动。则:'1997-11-21'.replace('(\d{4})-(\d{2})-(\d{2})','$2$1$3')。使用$n代表一个整体变量。
前瞻:正则表达式是从文本头部向尾部解析,文本尾部方向称为前。前瞻就是在正则表达式匹配到规则的时候,向前检查是否符合断言,后瞻方向相反。JS不支持后顾。
符合和不符合的特定断言,称为肯定/正向匹配和否定/负向匹配。
正向前瞻:exp(?=assert);如 'a2*34vv'.replace(/\w(?=\d)/,'X')匹配结果为X3*X4vv。
负向前瞻:exp(?!assert);如 'a2*34vv'.replace(/\w(?!\d)/,'X')匹配结果为aX*3XXX。
对象属性:除了前面的g,i,m外,还有:
lastIndex:是当前表达式匹配内容的最后一个字符的下一个位置。
source:正则表达式的文本字符串。
【正则表达式方法】
本身的方法:test跟exec方法
test方法(RegExp.prototype.test(str)):用于测试字符串参数中是否存在匹配正则表达式模式的字符串。
exec方法(RegExp.prototype.exec(str)):使用正则表达式模式对字符串搜索,并将更新全局RegExp对象的属性以反映匹配结果。如果没有匹配的文本则返回null,否则则返回一个结果数组:
-index 声明匹配文本的第一个字符位置。
-input 存放被检索的字符串string。
调用非全局的RegExp对象的exec()方法时,返回数组。第一个元素是与正则表达式相匹配的文本,第二个元素是与RegExpObject第一个表达式相匹配的文本(如果有的话),第二个元素是与RegExp对象第二个表达式相匹配的文本(如果有的话),以此类推。
---恢复内容结束---
JavaScript(3)—— 正则表达式的更多相关文章
- 详解Javascript中正则表达式的使用
正则表达式用来处理字符串特别好用,在JavaScript中能用到正则表达式的地方有很多,本文对正则表达式基础知识和Javascript中正则表达式的使用做一个总结. 第一部分简单列举了正则表达式在Ja ...
- javascript类型系统——正则表达式RegExp类型
× 目录 [1]对象 [2]实例属性 [3]静态属性[4]实例方法 前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- javascript中正则表达式的基础语法
× 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...
- 深入浅出的javascript的正则表达式学习教程
深入浅出的javascript的正则表达式学习教程 阅读目录 了解正则表达式的方法 了解正则中的普通字符 了解正则中的方括号[]的含义 理解javascript中的元字符 RegExp特殊字符中的需要 ...
- JavaScript验证正则表达式大全
JavaScript验证正则表达式大全,搜集最全的JavaScript验证正则表达式,开始查看吧,这里的都是正则表达式的例子,具体和函数结合的使用方法,还请查看下篇文章<JavaScript使用 ...
- 如何使用JavaScript和正则表达式进行数据验证
利用客户端JavaScript的优势,JavaScript中的正则表达式可以简化数据验证的工作,下面与大家分享下如何使用JavaScript和正则表达式进行数据验证,感兴趣的朋友可以参考下哈 数据验证 ...
- JavaScript常用正则表达式与应用(一)
JavaScript的String类和RegExp对象类都定义了相关方法使用正则表达式进行模式匹配,本文将以连载方式介绍JavaScript常用正则表达式与相关应用,欢迎交流 本节是连载一,首先介绍J ...
- javascript基础-正则表达式
概述 正则表达式被用来检索.替换那些符合某个模式的文本 标准正则表达式语法 javascript对正则表达式的支持 替代写法 逆向环视 //需求:替换mpre.cnsuning.com为${pre}, ...
- JavaScript中正则表达式判断匹配规则以及常用的方法
JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想 ...
随机推荐
- bzoj3156防御准备
3156: 防御准备 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1349 Solved: 605[Submit][Status][Discuss ...
- SQL 小笔记
如何得到字段的类型 select sql_variant_property(ID,'BaseType') from tb
- 连续多个git提交发生了冲突时
git checkout -b test 创建并切换到分支test git clone git branch master git merge test 合并test到master (git merg ...
- iOS摇一摇功能、震动功能、简单的摇动动画、生成二维码图片与发送短信等几个功能
有一个开锁的功能,具体的需求就类似于微信的"摇一摇"功能:摇动手机,手机震动,手机上的锁的图片摇动一下,然后发送开锁指令.需求简单,但用到了许多方面的知识. 1.摇一摇 相对这是最 ...
- 五、oracle基本建表语句
--创建用户create user han identified by han default tablespaceusers Temporary TABLESPACE Temp;grant conn ...
- CentOS 下网络报错 Device eth0 does not seem to be present
在执行network服务重启后,出现Device eth0 does not seem to be present 问题,主要是因为系统之前有多个网卡配置,和配置文件不匹配造成的. 解决这种问题,思 ...
- mybatis笔记(一)
mybatis (一)传值 三种方式 1.直接传值void getMessageList(int userId,String userName);mapper.xml 获取 #{0}代表userId ...
- .NET架构师
闲话不多扯,关于.NET架构师的培训 架构师的知识体系总结:7大重点,对7大重点作为细节的阐述将再后面陆续展开!架构师的体系纲领主要来着这7点.(必须严格记下) 1:现代软件开发过程及架构策略 1. ...
- Hibernate3 第一天
Hibernate3 第一天 课程安排:4天(框架的使用+理论知识) 第一天Hibernate快速入门(单表的CRUD)+核心api讲解(配置+接口) 第二天:Hibernate一级缓存,快照,对象持 ...
- kali Rolling安装之后的一些常用配置总结
添加普通用户 useradd -m -G sudo,video,audio,cdrom -s /bin/bash OKing把某个用户添加到组中: sudo usermod -a 用户名 -G 组名 ...