正则表达式的模式规则是由一个字符系列组成的,包括所有字母和数字在内;
大多数的字符(所有字母和数字)都是按字符的直接量来描述带匹配的字符;
一些具有特殊语义的字符按照其特殊语义来进行匹配,有些字符需要通过(\)进行转义;
字符 匹配
字母,数字 自身
\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. codeforces——Little Pony and Expected Maximum

    /* 我们枚举每次选择最大数值的情况:m个数, 投掷n次 最大值是1: 1种 2: 2^n-1 3: 3^n-2^n ..... m: m^n-(m-1)^n 所以最后的结果=sum((k/m)^n ...

  2. javaWeb之maven多数据库环境的配置信息

    在使用maven构建的web项目里,不管采用的是什么orm框架,数据库写死了必然不是最灵活的方式.所以通过maven 的buid方式可以动态的分配数据库信息 比如在jdbc.properties中,可 ...

  3. Cordova webapp实战开发:(4)Android环境搭建

    在<Cordova webapp实战开发:(3)后面可能会学到的东西>中我们说了一下后续大致包括的内容,今天我们继续.上周我在掌中广材集成了友盟的社交分享,今天想集成iOS应该很顺利的,但 ...

  4. Elasticsearch——禁止Body中的index覆盖Url中的index参数

    本篇继续一下Elasticsearch日常使用的技巧翻译. 在Elasticsearch有很多的api支持在body中指定_index等信息,比如mget或者msearch以及bulk. 默认的情况下 ...

  5. PHP的反射机制

    在面向对象中最经典的使用就是反射,之前在Java语言中,使用反射可以解耦,用于依赖注入. 在PHP中,同样也有如此强大的地方,我们利用反射来获取一个对象的实例. 首先我们先写一个类: class Te ...

  6. JS的跳转

    需要在下面的button中实现跳转,之前直接写了个<a>标签,但是在手机上的效果太差了,这是老大写的 js跳转.记下来,要学会贯通. <div class="ps-lt&q ...

  7. C# 代码编程规范

    1.       类一定要有注释 2.       C#代码要用#region包起来,#region之间要留一个且只留一个空行 3.       含义复杂不容易看懂的参数要写注释 4.       方 ...

  8. html5画布的旋转效果

    keleyi.htm的代码如下: <!DOCTYPE HTML> <html> <head> <title>html旋转画布-柯乐义</title ...

  9. 【C#】添加引用方式抛出和捕获干净的WebService异常

    说明:[干净]指的是客户端在捕获WebService(下称WS)抛出的异常时,得到的ex.Message就是WS方法中抛出的异常消息,不含任何“杂质”. 前提:你对WS有编写权.就是说如果你调的是别人 ...

  10. java servlet+mysql全过程(原创)

    前段时间写过一篇 servlet+oracle的文章,但是那是因为公司有可能接那么一个项目,然后我当时也比较闲,所以随便学了下,那玩意是白去研究了,因为公司后面并没接到那项目. 这次学servlet用 ...