正则表达式的模式规则是由一个字符系列组成的,包括所有字母和数字在内;
大多数的字符(所有字母和数字)都是按字符的直接量来描述带匹配的字符;
一些具有特殊语义的字符按照其特殊语义来进行匹配,有些字符需要通过(\)进行转义;
字符 匹配
字母,数字 自身
\o NUL字符\u0000
\t 制表符\u0009
\n 换行符\u000A
\v 垂直制表符\u000B
\f 换页符\u000C
\r 回车符\u000D
\Xnn \xnn 由十六进制数nn指定的拉丁字符,如\x0A等价于\n
\uxxxx 由十六进制数xxxx指定的Unicode字符,如\u000A等价于\n
\cX 控制字符^X,如\cJ等价于\n
正则表达式中具有特殊含义的标点符号:(某些符号只有在正则表达式的某些上下文中才具有某种特殊含义)
^ $ . * + ? = ! : | \ / ( ) [ ] { } 还有连字符'-'
若要将以上特殊符号按直接量进行匹配,则必须使用前缀\来转义,其它符号则无需转义直接按字面量匹配;
 
正则表达式的重复字符语法:
 
以上是贪婪式匹配(尽可能多的匹配),若要进行非贪婪匹配(若可以则尽可能少的匹配)只需在后面加个'?',如:??,+?,*?,{1,5}?,{1,}?,在它们后面加'?'表示若可以则取下限值,不可以的情况如/a+?b/匹配aaaab时结果是aaaab而不是ab,因为正则表达式总是会从第一个字符开始匹配的,所以他无法跳过前面的aaa
选择项如/ab|cd|abcd/匹配ab或cd或abcd,尝试匹配是从左到右,直到发现匹配项,就忽略其他选项;
圆括号的作用1:把单独的项组合成子表达式,如/(ab|cd)+|ef/,可以匹配ef,也可以匹配ab或cd的多次重复
圆括号的作用2:在完整的模式中定义子模式,当成功匹配完整模式时,可以从目标中抽出和子模式相匹配的部分,如/[a-z]+(\d+)/,匹配一个或多个小写字母后面跟一位或多位数字,匹配成功则抽取数字部分;
圆括号的作用3:允许在同一个表达式的后部引用前面的子表达式所匹配的字符串(引用:通过在\后面加一位或多位数字来指定第几个左括号),如/([Jj]ava([Ss]crip)?) \sis\s(fun\w*)/,\2表示引用与第三个左括号内的子表达式([Ss]crip)相匹配的字符串;/(['"])[^'"]*\1/表示匹配位于单引号对或双引号对之间的0个或多个字符;
正则表达式中不允许单引号和双引号之间的相互嵌套,如/(['"])[^\1]*\1/这是错误的,中间的\1被嵌套了
 
 
指定匹配位置:锚
 
如:
/\bJava\b/以边界来匹配单词Java,
匹配单词JavaScript可以用/^JavaScript$/,
/\B[Ss]cript/与JavaScript和postscript匹配,不匹配script和Scripter,
/[Jj]ava ([Ss]cript)?(?=\:)/只匹配后面带冒号的,匹配JavaScript:The中的JavaScript,不匹配JavaScript The,
/Java(?!Script)([A-Z]\w*)/可以匹配Java后跟一个大写字母和任意多个ASC2字符,但Java后面不能跟Script
 
修饰符:用以说明高级匹配模式的规则,修饰符放在正则表达式/../之后,可以任意组合,如/java/ig表示匹配不区分大小写且在全文中匹配所有

JavaScript学习笔记-正则表达式(语法篇)的更多相关文章

  1. JavaScript 学习笔记之最终篇

      JavaScript 的学习算是最后一篇了...把JS基础已经核心的部分彻底的进行了学习... 唯一的缺陷就是自己在运用上并不是特别的熟练...今天是JS的最后一章内容了..也是JS 中最常用的内 ...

  2. JavaScript学习笔记-基础语法、类型、变量

    基础语法.类型.变量   非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或 ...

  3. Python学习笔记——基础语法篇

    一.Python初识(IDE环境及基本语法,Spyder快捷方式) Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,没有编译过程,可移植,可嵌入,可扩展. IDE 1.检查Pyth ...

  4. Verilog学习笔记基本语法篇(十二)········ 编译预处理

    h Verilog HDL语言和C语言一样也提供编译预处理的功能.在Verilog中为了和一般的语句相区别,这些预处理语句以符号"`"开头,注意,这个字符位于主键盘的左上角,其对应 ...

  5. JavaScript学习笔记-正则表达式(RegExp对象)

    正则表达式(RegExp对象)   1.正则表达式字面量,在脚本加载后编译.若你的正则表达式是常量,使用这种方式可以获得更好的性能,重复使用时不会重新编译: 2.使用构造函数创建的RegExp,提供了 ...

  6. JavaScript学习笔记- 正则表达式常用验证

    <div> <h1>一.判断中国邮政编码匹配</h1> <p>分析:中国邮政编码都是6位,且为纯数字</p> <div>邮政编码 ...

  7. JavaScript学习笔记- 正则表达式常用字符集及方法

    正则表达式修饰符(修饰符 可以在全局搜索中不区分大小写) i(ignoreCase)执行对大小写不敏感的匹配 g (global)     执行全局匹配(查找所有匹配而非在找到第一个匹配后停止) m( ...

  8. Verilog学习笔记基本语法篇(九)········ 任务和函数

    task 和 function 说明语句分别用来定义任务和函数,利用任务和函数可以把函数模块分成许多小的任务和函数便于理解和调试.任务和函数往往还是大的程序模块在不同地点多次用到的相同的程序段.输入. ...

  9. Verilog学习笔记基本语法篇(十一)········ 常用系统函数

    1)系统任务:$monitor   格式: $monitor(p1,p2,p3...pn); $monitor; $monitoron; $monitoroff; 任务$monitor提供了监控输出列 ...

随机推荐

  1. AIX下tar解包问题

    今天,在AIX下安装tomcat,上传的版本是apache-tomcat-6.0.41.tar.gz,但用tar解压时出现以下问题: # tar xvf apache-tomcat-6.0.41.ta ...

  2. ArcGIS Earth数据小析

    ArcGIS Earth,一款轻量级的三维地球应用.因为工作关系下载试用了半天,正好借这个机会简单研究一下ArcGIS Earth的大概思路,特别是地形数据的组成和影像数据的加载,在这总结整理一下.下 ...

  3. JAVA编程“性能说”(java编程需要做的26件事)

    转载于 http://www.csdn.net/article/2012-06-01/2806249 最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过 ...

  4. QQ JS_SDk相关功能接口

    一.实现QQ登录功能 <!DOCTYPE html><html lang="zh-cn">   <head>      <meta htt ...

  5. java虚拟机启动参数分类详解

    官方文档见: http://docs.sun.com/source/819-0084/pt_tuningjava.html java启动参数共分为三类:其一是标准参数(-),所有的JVM实现都必须实现 ...

  6. HBase相关

    hadoop和hbase节点添加和单独重启 有时候hadoop或hbase集群运行时间久了后,某些节点就会失效,这个时候如果不想重启整个集群(这种情况在很多情况下已经不被允许),这个时候可以单独重启失 ...

  7. VS2015 新Web项目(C#6)出现CS1617错误的解决

    VS2015新增了对C#6的支持. 在新的Web项目模板中通过引入nuget包Microsoft.CodeDom.Providers.DotNetCompilerPlatform:1.0.0并在web ...

  8. Git版本控制工具学习

    Git代码管理工具学习 分布式管理工具:git 相比较svn它更加的方便,基本上我们的操作都是在本地进行的. Git文件的三种状态:已提交,已修改,以暂存. 已提交:表示文件已经被保存到本地数据库. ...

  9. 基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

    最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...

  10. JQuery 快速入门一篇通

    JQuery是什么? JQuery 是一套JavaScript库, 使用它,可以很方便的进行 JavaScript的编程.比如: 获取页面元素, 修改页面元素的CSS样式等等都可以以很简单的语法完成. ...