1.正则表达式的定义

描述字符模式的对象,JavaScript的RepExp类表示正则表达式

var pattern = new RegExp("s\("); <=> var pattern = /s\)/;

2.直接量字符

\o NUL字符

\t 制表符

\n 换行符

\v 垂直制表符

\f 换页符

\r 回车

3.字符类

[...] 方括号内的任意字符

[^...] 不在方括号内的任意字符

. 除换行符和其他Unicode行终止符之外的任意字符

\w 任何ASCII字符组成的单词,等价于[a-zA-Z0-9]

\W 任何非ASCII字符组成的单词,等价于[^a-zA-Z0-9]

\s 任何Unicode空白符

\S 任何非Unicode空白符

\d 任何ASCII数字,等价于[0-9]

\D 任何非ASCII数字,等价于[^0-9]

[\b] 退格直接量

4.重复

{n,m} 匹配前一项至少n次,但不超过m次

{n,} 匹配前一项n次或者更多次

{n} 匹配前一项n次

? 匹配前一项0次或者1次,等价于{0,1}

  •        匹配前一项至少1次或者更多次,等价于{1,}
  •        匹配前一项0次或者更多次,等价于{0,}

example:

/\d{2,4}/ //匹配2~4个数字

/\w{3}\d?/ //匹配3个单词加一个可选数字

/\s+java\s+/ //匹配java单词前后至少一个空格

/[^(]*/ //匹配以一个或者多个左括号开始的字符

5.非贪婪

重复为尽可能的多匹配,非贪婪模式是尽可能的少匹配

??

+?

*?

example:

{1,5}? //尽可能的匹配一个

6.选择分组引用

| 选择,匹配的是该符号左边的子表达式或者右边的子表达式

(...) 组合,将几个项组合为一个单元,这个单元可通过* + ? | 等符号加以修饰,而且记住和这个组合相匹配的字符串以供此后的引用使用

(?:...) 只组合,把项组合到一个单元,但不记忆与改组相匹配的字符

\n 和第n个分组第一次匹配的字符相匹配,组是圆括号中的子表达式(也可能是嵌套的),组索引是从左到右的左括号数,(?: 形式的分组不编码

7.锚字符

^ 匹配字符串的开头,在多行检索中匹配一行的开头

$ 匹配字符串的结尾,在多行检索中匹配一行的结尾

\b 匹配一个单词的边界,就是位于\w与\W之间的位置

\B 匹配非单词边界的位置

(?=p) 零宽正向先行断言,要求接下来的字符都与p匹配,但不能包括匹配p的那些字符

(?!=p) 零宽负向先行断言,要求接下来的字符都不与p匹配

8.修饰符

i 不区分大小写

g 全局匹配

m 多行匹配模式

9.用于模式匹配的String方法

search()

“javascript”.search(/script/i); 如果匹配则返回对应索引,否则返回-1

replace()

text.replace(/javascript/gi,"JavaScript"); 检索和替换

match()

"1 plus 2 equals 3".match(/\d+/g); 返回["1","2","3"]

split()

"1,2,3,4,5".split(/\s,\s/);返回["1","2","3","4","5"]

10.RegExp对象

RegExp第一个参数包含正则表达式的主体部分,也就是直接量中两条斜线之间的文本,不论是字符串直接量还是正则表达式都使用 \ 字符作为转义字符的前缀,

因此当给RegExp()传入一个字符串表述正则表达式时,必须将 \ 替换成 \

第二个参数是可选的,只能传 g i m,或者它们的组合

var zipcode = new RegExp("\d{5}","g");

RegExp属性

source:是一个只读字符串,包含正则表达式的文本

global:是一个只读的布尔值,用以说明这个正则表达式是否带有修饰符g

ignoreCase:是一个只读的布尔值,用以说明正则表达式是否带有修饰符i

multiline:是一个只读的布尔值,用以说明正则表达式是否带有修饰符m

lastIndex:是一个可读/写的整数,如果匹配模式带有g修饰符,这个属性存储在整个字符串的下一次检索的开始位置,会被exec(),test()方法用到

RegExp方法

exec()

执行字符串的匹配检索,类似String.match(),都会返回一个数组

test()

当调用exec方法返回不为null则调用test方法返回为true

正则表达式之javascript的更多相关文章

  1. 正则表达式(javascript)学习总结

    正则表达式在jquery.linux等随处可见,已经无孔不入.因此有必要对这个工具认真的学习一番.本着认真.严谨的态度,这次总结我花了近一个月的时间.但本文无任何创新之处,属一般性学习总结. 一.思考 ...

  2. JS正则表达式(JavaScript regular expression)

    RegExp直接量和对象的创建 就像字符串和数字一样,程序中每个取值相同的原始类型直接量均表示相同的值,这是显而易见的.程序运行时每次遇到对象直接量(初始化表达式)诸如{}和[]的时候都会创建新对象. ...

  3. 正则表达式基于JavaScript的入门详解

    关于正则表达式,和很多前辈聊起这个知识点时,他们的反馈都比聊其他技术谦逊,而和很多刚入门的程序员讨论时甚至会有觉得你看不起他. 的确,正则表达式从通常的应用来看,的确不难,比如电话,邮箱等验证.语法, ...

  4. 正则表达式(javascript)

    在开发过程中要要把一个css中的平移的x,y提取出来 ,正好把正则表达式学习了一下 'fsdfsdfsdf300pxfdsfd200pxfsdfsdf100px'  找出里面 px前面的数字: 经查资 ...

  5. 正则表达式java,javaScript应用

    dfa nfa 混合:捕获:断言:  正则引擎大体上可分为不同的两类:DFA和NFA,而NFA又基本上可以分为传统型NFA和POSIX NFA.   1.正则语法 捕获组: 没用()的字符都是一个一个 ...

  6. 常用的正则表达式归纳—JavaScript正则表达式

    来源:http://www.ido321.com/856.html 1.正则优先级 首先看一下正则表达式的优先级,下表从最高优先级到最低优先级列出各种正则表达式操作符的优先权顺序: 2.常用的正则表达 ...

  7. LeetCode10.正则表达式匹配 JavaScript

    给定一个字符串 (s) 和一个字符模式 (p).实现支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符. '*' 匹配零个或多个前面的元素. 匹配应该覆盖整个字符串 (s) ,而不 ...

  8. 密码强度的正则表达式(JavaScript)总结

    简言 本文给出了两个密码强度的正则表达式方案,一个简单,一个更复杂和安全.并分别给出了两个方案的解析和测试程序.一般大家可以根据自己的项目的实际需要,自行定义自己的密码正则约定. 前言 用户注册时,都 ...

  9. 常用正则表达式整理[JavaScript]

    URL /^(http\:\/\/|https\:\/\/)(.{4,})$/ 18位身份证号 //前17位数字,末位支持X/^\d{17}\d{1}$|^\d{17}x{1}$/ 手机号 //11位 ...

随机推荐

  1. Samba简介与配置(匿名&本地用户验证)

    Samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. 在此之前我们已经了解了NFS,NFS与samba一样,也是在网络中实现文件共享的一种实 ...

  2. 【转】C#单元测试,带你快速入门

    [转]C#单元测试,带你快速入门 注:本文示例环境 VS2017 XUnit 2.2.0 单元测试框架 xunit.runner.visualstudio 2.2.0 测试运行工具 Moq 4.7.1 ...

  3. hibernate的Could not execute JDBC batch update错误原因及处理

    http://blog.csdn.net/derpvailzhangfan/article/details/2332795\ 上述问题: 一设置关联 二包含关键字 三 映射文件设置 catalog=“ ...

  4. hadoop 有那些发行版本

    hadoop发行版本 1. apache hadoop  http://hadoop.apache.org/ 2. cloudera hadoop(CDH) https://www.cloudera. ...

  5. python基本数据类型之字符串(二)

    python基本数据类型之字符串(二) 替换方法 python中字符串的替换方法主要有:center.rjust\ljust.expandtabs.format\format_map(格式化).str ...

  6. Android 框架式编程 —— 起篇

    一般的,在开发的时候,写过的代码在需求变更后,发现需要改动非常多的地方,那么说明之前的代码的架构肯定是存在问题的. 下面我们结合面向对象的六大基本原则谈Android 框架式编程.首先先介绍一下面向对 ...

  7. lable标签的用途

    lable标签的用途:为iput输入框元素定义标注: label 元素不会向用户呈现任何特殊效果.不过,它为鼠标用户改进了可用性.如果您在 label 元素内点击文本,就会触发此控件.就是说,当用户选 ...

  8. 使用create-react-app 快速构建 React 开发环境以及react-router 4.x路由配置

    create-react-app 是来自于 Facebook,通过该命令我们无需配置就能快速构建 React 开发环境. create-react-app 自动创建的项目是基于 Webpack + E ...

  9. js 学习记录(一)

    前情提要: 本记录参照  <<javascript 入门导论>>  这本书学习 

  10. Strom

    storm    实时分析概念        离线分析             通常是 需要一段时间的数据积累 积累到一定数量数据后 开始离线分析 无论数据量多大 离线分析 有开始 也有结束 最终得到 ...