声明方法:

var expression = /pattern/flags;
//var expression = new RegExp("pattern","flags");
//pattern:正则表达式串
//flags有3种可混合选择:
//1、g:全局模式,该模式应用与所有字符串,而非在发现第一个匹配项就停止
//2、i:不区分大小写
//3、m:多行模式,在达到一行文本末尾时还会继续查找下一行文本 

 常用方法:

1、exec方法

var text = "mom and dad and baby";var pattern = /mom( and dad( and baby)?)?/gi;
var matches = pattern.exec(text);alert(matches.index);    //0
alert(matches.input);    //"mom and dad and baby"
alert(matches[0]);       //"mom and dad and baby"
alert(matches[1]);       //" and dad and baby"
alert(matches[2]);       //" and baby"

exec返回值的属性说明:

index表示匹配项在字符串中的位置

input表示应用正则表达式的字符串,即输入字符串

返回值数组的第一项是与整个匹配模式匹配的字符串,其他项是否有值取决于匹配模式中是否有捕获组(即(xxx)?)

其中第一项的值还跟匹配模式中是否有全局标识(g)有关,参考如下例子

        var text = "cat, bat, sat, fat";        var pattern1 = /.at/;var matches = pattern1.exec(text);        alert(matches.index);    //0alert(matches[0]);       //"cat"alert(pattern1.lastIndex);//0
matches = pattern1.exec(text);        alert(matches.index);    //0alert(matches[0]);       //"cat"alert(pattern1.lastIndex);//0var pattern2 = /.at/g;var matches = pattern2.exec(text);        alert(matches.index);    //0alert(matches[0]);       //"cat"alert(pattern2.lastIndex);//0
matches = pattern2.exec(text);        alert(matches.index);    //5alert(matches[0]);       //"bat"alert(pattern2.lastIndex);//0

2、test方法

返回某个字符串是否满足匹配模式(true/false)

var text = "cat, bat, sat, fat";
var pattern = /.at/;if (pattern.test(text)){alert("The pattern was matched.");
}

跟上面2个方法相似的方法有String.match(pattern)和string.search(pattern)

用法如下:

var r, re;         // 声明变量。
var s = "The rain in Spain falls mainly in the plain";
re = /ain/ig;      // 创建正则表达式模式。
r = s.match(re);   // 尝试去匹配搜索字符串,没匹配则返回null
return(r);         // 返回的数组包含了所有 "ain" 出现的四个匹配。如果没加全局标识则返回第一个"ain"

RegExp构造函数的属性

var text = "this has been a short summer";
var pattern = /(.)hort/g;/** Note: Opera doesn't support input, lastMatch, lastParen, or multiline.* Internet Explorer doesn't support multiline.
*/
if (pattern.test(text)){
alert(RegExp.input);               //this has been a short summer  输入值
//alert(RegExp.$_); 

alert(RegExp.leftContext);         //this has been a      匹配项的左边的内容
//alert(RegExp["$·"]); 

alert(RegExp.rightContext);        // summer   匹配项右边的内容
//alert(RegExp["$'"]); 

alert(RegExp.lastMatch);           //short 最近一次匹配的匹配项
//alert(RegExp["$&"]); 

alert(RegExp.lastParen);           //s  最近一次匹配的捕获组
//alert(RegExp["$+"]); 

alert(RegExp.multiline);           //false  是否使用了多行模式//alert(RegExp["$*"]);
}

正则表达式的语法

字符 描述
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} mn 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。刘, "o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
(pattern) 匹配pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0$9 属性。要匹配圆括号字符,请使用 '\(' 或 '\)'。
(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如, 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 负向预查,在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
x|y 匹配 xy。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
[xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
\B 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。 x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
\W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。
\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如, '\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。.
\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。
\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若  nm 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm
\nml 如果 n 为八进制数字 (0-3),且 ml 均为八进制数字 (0-7),则匹配八进制转义值 nml。
\un 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, \u00A9 匹配版权符号 (?)。

【JS】引用类型之RegExp相关推荐

  1. js引用类型之RegExp类型-new RegExp()

    引 用 类 型 定义:引用类型是一种数据结构,用于将数据和功能组织在一起,引用类型有时候也被称为对象定义 RegExp 类型 标志flag的含义:  g :表示全局(global)模式,即模式将被应 ...

  2. JS正则表达式(RegExp)

    字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在.比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦, ...

  3. 判断字符串 正则_(重学前端 - JavaScript(模块一)) 14、引用类型之 RegExp (正则)(详述)...

    上一篇文章介绍了 JavaScript 中的 Date 类型,从地理方面的原理知识开始入手,如果大家认真看过上一篇文章,相信 JavaScript 中的 Date 类型已经难不住大家了!!! 但是今天 ...

  4. 问题分享:Js引用类型赋值

    今天在微信群里有这样一个问题和大家分享一下: 附上源码: function changeAgeAndReference(person){person . age = 25;person = {nage ...

  5. js——引用类型和基本类型

    js中的数据类型有以下几种: Number   Boolean   undefined     Object   Function    String  Null 基本类型:Number Boolea ...

  6. JS 正则(RegExp)

    JavaScript RegExp 对象 :测试工具:REGEXPER 通过 new 关键词来定义 RegExp 对象. test() test() 方法检索字符串中的指定值.返回值是 true 或 ...

  7. JS引用类型(6)——基本包装类型1

    [6]基本包装类型 3个特殊的引用类型:Boolean.Number.String. 每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据. ...

  8. JS高级 之 RegExp - 正则表达式

    目录 ​​​​​​​一.正则表达式 1. 概念 2. 创建 01 - 通过RegExp类来创建 02 - 通过字面量来创建 3. 使用方法 正则对象的实例方法 01 - exec 02 - test ...

  9. JS:正则RegExp对象匹配中文汉字

    以下方式相同 // 需要常规的字符转义规则 var re1 = new RegExp("^\\d+万$"); console.log(re1.test('30万')); var r ...

最新文章

  1. editplus 3 注册码
  2. Geth 控制台使用及 Web3.js 使用实战
  3. 用于高保真自然图像合成的大规模GAN训练(Large Scale GAN Training For High Fidelity Natural Images)论文 pdf
  4. ASP.NETcompilation debug=false targetFramework=4.0/错误
  5. 在Red Hat Linux中自动运行程序
  6. 代码质量的几点新思考
  7. javascript类型注意事项
  8. Hologres助力飞猪双11实时数据大屏秒级响应
  9. hdfs的实验总结_实验2-熟悉常用的HDFS操作.doc
  10. mybatis多数据源配置_随笔:springboot+mybatis 配置双数据源
  11. python并集符号_Python Union()用法及代码示例
  12. Windows下Apache Tomcat 8安装配置
  13. 牛客竞赛,GDDU第十届文远知行杯新生程序设计竞赛,摸鱼记(BDEIKL题解,补G,ACFHJ)
  14. 清除eclipse当前登录的SVN账户
  15. morphia查询Mongo数据库通过ReadPreference主从数据库查询切换方法
  16. ASP.NET中使用JQuery生成登陆验证码
  17. 2021 泰迪杯 C 思路
  18. 离散数学及其应用第1章笔记总结
  19. php上传的文件名乱码,php上传文件时文件名乱码怎么办
  20. c语言错误中numeric,LC_NUMERIC

热门文章

  1. java默认virtual_mac jdk配置(系统默认or自己配置)
  2. exchange服务器磁盘性能,如何解决Exchange磁盘空间问题
  3. python执行效果_python:执行一个命令行N次
  4. 如何在 reducer 之间共享 state?
  5. svg实现loading效果
  6. requestIdleCallback函数
  7. 计算机网络考试难吗,网络教育统考中的计算机考试难不难,
  8. 集群资源分配_推荐一款MySQL日常运维和集群管理的自动化平台--Arkcontrol
  9. ppt中流程图旁边怎么添加_辅食中的黑芝麻酱怎么添加呢?
  10. linux测试dvi接口,TeX Live DVI字体数据解析整数溢出漏洞