---恢复内容开始---

正则表达式

这是写的正则表达式,正则表达式的点比较多,也比较细。所以有些地方我们得注意的比较多。正则表达式在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)—— 正则表达式的更多相关文章

  1. 详解Javascript中正则表达式的使用

    正则表达式用来处理字符串特别好用,在JavaScript中能用到正则表达式的地方有很多,本文对正则表达式基础知识和Javascript中正则表达式的使用做一个总结. 第一部分简单列举了正则表达式在Ja ...

  2. javascript类型系统——正则表达式RegExp类型

    × 目录 [1]对象 [2]实例属性 [3]静态属性[4]实例方法 前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String ...

  3. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

  4. javascript中正则表达式的基础语法

    × 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...

  5. 深入浅出的javascript的正则表达式学习教程

    深入浅出的javascript的正则表达式学习教程 阅读目录 了解正则表达式的方法 了解正则中的普通字符 了解正则中的方括号[]的含义 理解javascript中的元字符 RegExp特殊字符中的需要 ...

  6. JavaScript验证正则表达式大全

    JavaScript验证正则表达式大全,搜集最全的JavaScript验证正则表达式,开始查看吧,这里的都是正则表达式的例子,具体和函数结合的使用方法,还请查看下篇文章<JavaScript使用 ...

  7. 如何使用JavaScript和正则表达式进行数据验证

    利用客户端JavaScript的优势,JavaScript中的正则表达式可以简化数据验证的工作,下面与大家分享下如何使用JavaScript和正则表达式进行数据验证,感兴趣的朋友可以参考下哈 数据验证 ...

  8. JavaScript常用正则表达式与应用(一)

    JavaScript的String类和RegExp对象类都定义了相关方法使用正则表达式进行模式匹配,本文将以连载方式介绍JavaScript常用正则表达式与相关应用,欢迎交流 本节是连载一,首先介绍J ...

  9. javascript基础-正则表达式

    概述 正则表达式被用来检索.替换那些符合某个模式的文本 标准正则表达式语法 javascript对正则表达式的支持 替代写法 逆向环视 //需求:替换mpre.cnsuning.com为${pre}, ...

  10. JavaScript中正则表达式判断匹配规则以及常用的方法

    JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想 ...

随机推荐

  1. bzoj3156防御准备

    3156: 防御准备 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1349  Solved: 605[Submit][Status][Discuss ...

  2. SQL 小笔记

    如何得到字段的类型 select sql_variant_property(ID,'BaseType') from tb

  3. 连续多个git提交发生了冲突时

    git checkout -b test 创建并切换到分支test git clone git branch master git merge test 合并test到master (git merg ...

  4. iOS摇一摇功能、震动功能、简单的摇动动画、生成二维码图片与发送短信等几个功能

    有一个开锁的功能,具体的需求就类似于微信的"摇一摇"功能:摇动手机,手机震动,手机上的锁的图片摇动一下,然后发送开锁指令.需求简单,但用到了许多方面的知识. 1.摇一摇 相对这是最 ...

  5. 五、oracle基本建表语句

    --创建用户create user han identified by han default tablespaceusers Temporary TABLESPACE Temp;grant conn ...

  6. CentOS 下网络报错 Device eth0 does not seem to be present

    在执行network服务重启后,出现Device eth0 does not seem to be present  问题,主要是因为系统之前有多个网卡配置,和配置文件不匹配造成的. 解决这种问题,思 ...

  7. mybatis笔记(一)

    mybatis (一)传值 三种方式 1.直接传值void getMessageList(int userId,String userName);mapper.xml 获取 #{0}代表userId ...

  8. .NET架构师

    闲话不多扯,关于.NET架构师的培训  架构师的知识体系总结:7大重点,对7大重点作为细节的阐述将再后面陆续展开!架构师的体系纲领主要来着这7点.(必须严格记下) 1:现代软件开发过程及架构策略 1. ...

  9. Hibernate3 第一天

    Hibernate3 第一天 课程安排:4天(框架的使用+理论知识) 第一天Hibernate快速入门(单表的CRUD)+核心api讲解(配置+接口) 第二天:Hibernate一级缓存,快照,对象持 ...

  10. kali Rolling安装之后的一些常用配置总结

    添加普通用户 useradd -m -G sudo,video,audio,cdrom -s /bin/bash OKing把某个用户添加到组中: sudo usermod -a 用户名 -G 组名 ...