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. 接口测试3A原则

    手工的功能测试用例也可以用3A原则来编写. Arrange: 准备被测功能相关的测试数据,比如往系统里录入一批工单以便测试工单的分页功能 Act : 调用被测的功能,实际上这就是我们一直讲的测试步骤 ...

  2. ubuntu 应用添加进环境变量

    BG:公司同事使用的电脑系统大多为windows ,有部分mac和Ubuntu(我就是那个部分Ubuntu),某些情况为了统一格式,便下载了一些解压即可使用的软件,但是每次点开文件夹然后点开程序很繁琐 ...

  3. Linux学习--- 宏定义下#、##的使用

    #   字符串化 ## 连接符号 eg: #include <stdio.h> #define ABC(x) #x #define DAY(c) myday##c int main (){ ...

  4. python中global和nonlocal用法的详细说明

    一.global 1.global关键字用来在函数或其他局部作用域中使用全局变量.但是如果不修改全局变量也可以不使用global关键字.   gcount = 0 def global_test(): ...

  5. 关于wifi网络基本原理了解

    对于esp32,其wifi功能还是十分强大的,为了能够良好的完成wifi的相关开发,这里需要计算机网络的结构体系进行大致的了解. 一.网络结构分层 对于计算机网络结构,大体上可以分为5层结构: 物理层 ...

  6. Hadoop 系列文章(三) 配置部署启动YARN及在YARN上运行MapReduce程序

    这篇文章里我们将用配置 YARN,在 YARN 上运行 MapReduce. 1.修改 yarn-env.sh 环境变量里的 JAVA_HOME 路径 [bamboo@hadoop-senior ha ...

  7. 网络编程—端口分类调研和netstat命令

    运输层的端口: 1.什么是端口?为甚要使用用端口? 进程的创建和撤销都是动态的,通信的一方几乎无法识别对方机器上的进程,我们需要利用目的主机提供的功能来识别终点. 所以为了解决上述问题,我们就在运输层 ...

  8. [算法专题] Binary Tree

    1 Same Tree https://leetcode.com/problems/same-tree/ Given two binary trees, write a function to che ...

  9. ReactNative学习笔记(六)集成视频播放

    概述 视频播放可以自己写原生代码实现,然后注入JS.如果对视频播放没有特殊要求的话,可以直接使用现成插件. 到官方推荐的插件网站搜索找到下载量第一的插件:react-native-video. 安装 ...

  10. 利用phpcms后台漏洞渗透某色情网站

    本文来源于i春秋学院,未经允许严禁转载 phpcms v9版本最近爆了好几个漏洞,网上公开了不少信息,但没有真正实战过,就不能掌握其利用方法,本次是在偶然的机会下,发现一个网站推荐楼凤信息,通过分析, ...