Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >正则表达式总结 原

正则表达式总结 原

作者头像
tianyawhl
发布于 2019-04-04 08:37:57
发布于 2019-04-04 08:37:57
4910
举报
文章被收录于专栏:前端之攻略前端之攻略

 \    (1)在非特殊字符之前的反斜杠表示下一个字符是特殊的,不能从字面上解释。例如,没有前面'\'的'b'通常匹配小写'b',无论它们出现在哪里。如果加了'\',这个字符变成了一个特殊意义的字符,意思是匹配一个字符边界。  (2)反斜杠也可以将其后的特殊字符,转义为字面量。例如,模式 /a*/ 代表会匹配 0 个或者多个 a。相反,模式 /a\*/ 将 '*' 的特殊性移除,从而可以匹配像 "a*" 这样的字符串。

  ^   (1)匹配输入的开始。如果多行标志被设置为true,那么也匹配换行符后紧跟的位置。例如,/^A/ 并不会匹配 "an A" 中的 'A',但是会匹配 "An E" 中的 'A'。

  $   (1)匹配输入的结束 例如,/t$/ 并不会匹配 "eater" 中的 't',但是会匹配 "eat" 中的 't'。   *     (1)匹配前一个表达式0次或多次。等价于 {0,}。

  +   (1)匹配前一个表达式1次或多次。等价于 {1,}。   ?   (1)匹配前面一个字符0次或者1次。等价于 {0,1}。 例如,/e?le?/ 匹配 "angel" 中的 'el',和 "angle" 中的 'le' 以及"oslo' 中的'l'。    (2)如果紧跟在任何量词* + ? 或者{}的后面,将会使量词变成非贪婪,如正常情况123abc" 应用 /\d+/ 将会返回 "123",如果使用 /\d+?/,那么就只会匹配到 "1"。

  .   (1) (小数点)匹配除了换行符(\n)之外的任何单个字符。例如,/.n/将会匹配 "nay, an apple is on the tree" 中的 'an' 和 'on',但是不会匹配 'nay'。

  (x)   (1) 匹配 'x' 并且记住匹配项,就像下面的例子展示的那样。括号被称为 捕获括号。     (2)  模式 /(foo) (bar) \1 \2/ 中的 '(foo)' 和 '(bar)' 匹配并记住字符串 "foo bar foo bar" 中前两个单词。模式中的 \1 和 \2 匹配字符串的后两个单词。     (3)  注意 \1、\2、\n 是用在正则表达式的匹配环节。在正则表达式的替换环节,则要使用像 $1、$2、$n 这样的语法,例如,'bar foo'.replace( /(...) (...)/, '$2 $1' )。

  (?:x)    (1) 匹配 'x' 但是不记住匹配项。这种叫作非捕获括号,使得你能够定义为与正则表达式运算符一起使用的子表达式。来看示例表达式 /(?:foo){1,2}/。           如果表达式是 /foo{1,2}/,{1,2}将只对 ‘foo’ 的最后一个字符 ’o‘ 生效。如果使用非捕获括号,则{1,2}会匹配整个 ‘foo’ 单词

  x(?=y)    (1)匹配'x'仅仅当'x'后面跟着'y'.这种叫做正向肯定查找。只匹配x  ,/Jack(?=Sprat|Frost)/匹配‘Jack’仅仅当它后面跟着'Sprat'或者是‘Frost’。  但是‘Sprat’和‘Frost’都不是匹配结果的一部分。 "paramName".split(/(?=[A-Z])/) 返回结果为["param","Name"]; 

  x(?!y)   (1)匹配'x'仅仅当'x'后面不跟着'y',这个叫做正向否定查找。          例如,/\d+(?!\.)/匹配一个数字仅仅当这个数字后面没有跟小数点的时候。正则表达式/\d+(?!\.)/.exec("3.141")匹配‘141’但是不是‘3.141’

  x|y   (1)匹配‘x’或者‘y’。例如,/green|red/匹配“green apple”中的‘green’和“red apple”中的‘red’   {n}   (1)n是一个正整数,匹配了前面一个字符刚好发生了n次。比如/a{2}/会匹配“caandy”中所有的a,以及“caaandy”中的前两个'a'。

  {n,m}   (1)n 和 m 都是正整数。匹配前面的字符至少n次,最多m次。如果 n 或者 m 的值是0, 这个值被忽略。        (2)/a{1, 3}/,匹配“caandy”中得前两个a,也匹配“caaaaaaandy”中得前三个a。

  [xyz]   (1)一个字符集合。匹配方括号的中任意字符。你可以使用破折号(-)来指定一个字符范围。         (2)对于点(.)和星号(*)这样的特殊符号在一个字符集中没有特殊的意义。他们不必进行转意,不过转意也是起作用的。     (3)例如,[abcd] 和[a-d]是一样的。他们都匹配"brisket"中得‘b’,也都匹配“city”中的‘c’。/[a-z.]+/ 和/[\w.]+/都匹配“test.i.ng”中得所有字符。 下面的例子是验证输入框的值为1-10 <script> function myFunction() {     var x = document.getElementById("numb").value;     if (/^([0-9]|10)$/.test(x)) {         alert("ok")     } else {         alert("no")     } } </script>

  [^xyz]     (1)它匹配任何没有包含在方括号中的一个字符 ,例如,[^abc] 和 [^a-c] 是一样的。他们匹配"brisket"中得‘r’,也匹配“chop”中的‘h’。          (2)一个中括号[]表示匹配一个字符,第一个字符匹配上了,就不会管剩下的字符了。如果要匹配这多个字符。[^abc]*

[\b]    (1)匹配一个退格(U+0008)。(不要和\b混淆了。) \b     (1)匹配一个单词的边界 例如:/\bm/匹配“moon”中得‘m’;/oon\b/匹配"moon"中得'oon' \B      (1)匹配一个非单词边界 /\B../匹配"noonday"中得'oo', 而/y\B./匹配"possibly yesterday"中得’ye‘ \d    (1)匹配一个数字,等价于[0-9]。例如, /\d/ 或者 /[0-9]/ 匹配"B2 is the suite number."中的'2'。

\D    (1)匹配一个非数字字符。等价于[^0-9]。例如, /\D/ 或者 /[^0-9]/ 匹配"B2 is the suite number."中的'B' 。 \f    (1)匹配一个换页符 (U+000C)。 \n    (1)匹配一个换行符 (U+000A)。 \r    (1)匹配一个回车符 (U+000D)。

  \s   (1)匹配一个空白字符,包括空格、制表符、换页符和换行符。例如, /\s\w*/ 匹配"foo bar."中的' bar'。   \S     (1)匹配一个非空白字符。例如, /\S\w*/ 匹配"foo bar."中的'foo'。

 \t   (1)匹配一个水平制表符 (U+0009)。  \v   (1)匹配一个垂直制表符 (U+000B)。

  \w   (1)匹配一个单字字符(字母、数字或者下划线)。等价于[A-Za-z0-9_]。例如, /\w/ 匹配 "apple," 中的 'a',"$5.28,"中的 '5' 和 "3D." 中的 '3'。   \W   (1)匹配一个非单字字符,等价于[^A-Za-z0-9_]。例如, /\W/ 或者 /[^A-Za-z0-9_]/ 匹配 "50%." 中的 '%'。

正则表达式的方法 exec:一个在字符串中查找匹配RegExp方法,它返回一个数组(未匹配到则返回null) test:一个在字符串中测试是否匹配的RegExp方法,它返回true 或false match:一个在字符串中执行查找匹配的string方法,它返回一个数组或者在未匹配时返回null search:一个在字符串中测试匹配的string方法,它返回匹配到的位置索引,或者在失败时返回-1 replace:一个在字符串中执行查找匹配的string方法,并且使用替换字符串替换掉匹配到的字符串 split:一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的字符串存储到数组中的string方法

exec 与 match的区别

1.match match方法属于String正则表达方法.  语法: str.match(regexp) str:要进行匹配的字符串. regexp:一个正则表达式(或者由RegExp()构造成的正则表达式) match的用法主要区分就是,正则表达式是否有全局标示g. 1)如果有g全局标志,那么返回的数组保存的是,所有匹配的内容. 2)如果没有g全局标志,那么返回的数组arr.arr[0]保存的是完整的匹配.arr[1]保存的是第一个括号里捕获的字串,依此类推arr[n]保存的是第n个括号捕获的内容.

match没有g的情况  str = "abbb34eftab0modabbbbb6"; var reg = /a(b)+(\d+)/i; var arr = str.match(reg); console.log(arr) arr ["abbb34", "b", "34"] match有g的情况 str = "abbb34eftab0modabbbbb6"; var reg = /a(b)+(\d+)/ig; var arr = str.match(reg); ["abbb34", "ab0", "abbbbb6"]

2.exec 与match方法不同exec属于正则表达式的方法. 语法:var result1 = regexp.exec(str); regexp:正则表达式 str:要匹配的字串 exec与match的关联就是exec(g有没有都无影响)就等价于不含有g全局标志的match.即返回数组arr[0]为匹配的完整串.其余的为括号里捕获的字符串. 

var str = "Visit W3School, W3School is a place to study web technology.";  var patt = new RegExp("W3School","g"); var result; while ((result = patt.exec(str)) != null)  {   document.write(result);   document.write("<br />");   document.write(patt.lastIndex);   document.write("<br />");  } 显示结果 W3School 14 W3School 24

var str = "Visit W3School, W3School is a place to study web technology.";  var patt = /W3School/g; var result=patt.exec(str); result 显示["W3School"]

[总结] 主要区分match具有g和没有g的区别.然后没有g的时候与exec是等价的. 而exec返回的串类型不受g影响但具有g时候会驱动lastIndex可以模拟遍历所有匹配.可以与match具有g的时候等价 ,与循环配合使用全局匹配(如while(){}).

var patt1=new RegExp("e","g"); while((result=patt1.exec("The best things in life are free"))!=null){console.log(result);}

//exec()不能在while 外面

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/08/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【JS】128-重温基础:正则表达式
前置知识: JS中的正则表达式是用来匹配字符串中指定字符组合的模式。 另外需要记住:正则表达式也是对象。
pingan8787
2020/05/13
8310
正则表达式简明教程!
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来提取一大段字符串中,含有的特定格式子字符串。正则表达式是由普通字符以及特殊字符组成的文字模式。
Learn-anything.cn
2021/11/29
4930
正则表达式
正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式,在 JavaScript中,正则表达式也是对象。这些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、matchAll、replace、search 和 split 方法。正则表达式可用于所有文本搜索和文本替换的操作。 ==那就开始吧~==
Qwe7
2022/04/01
2510
JavaScript正则表达式
什么是正则表达式? 正则表达式也叫做匹配模式(Pattern),它由一组具有特定含义的字符串组成,通常用于匹配和替换文本。 在JavaScript脚本中,利用正则表达式可以很容易的实现文本字符串的检测、替换等功能。 正则表达式是字符串,它定义了一个用来搜索匹配字符串的模式。定义模式:/表达式/ JavaScript脚本语言中引入正则表达式主要作用: 验证字符串格式 查找字符串 替换文本 创建方式: 1、采用RegExp对象的显式构造函数构造 var regObj = ne
汤高
2018/01/11
2.5K0
JavaScript正则表达式
js正则表达式(一)
版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/article/details/78017841
空空云
2018/09/27
3.8K0
js正则表达式(一)
jq正则表达式_JAVA 正则表达式
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
全栈程序员站长
2022/11/05
1.8K0
正则表达式理论篇
学习正则表达式的你们,有没有发现,一开始总是记不住语法。嗯,加深大家的印象的同时,我也是来找同道中人的。
陈大鱼头
2021/10/09
1.2K0
正则表达式理论篇
正则表达式大全
正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。 -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"。 ^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a" $ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A" * 匹配前面元字符0次或多次,/b
Hongten
2018/09/18
4.6K0
正则表达式入门
前端往往有大量的表单数据校验的工作,采用正则表达式会使得数据校验的工作量大大减轻,如邮箱验证,手机号码,等等。比起用字符串的函数来判断简单,易用。
Daotin
2020/09/16
8960
正则表达式学习笔记
正则表达式 1. 使用正则 创建正则表达式有两种方式,一种是以字面量方式创建,另一种是使用RegExp构造函数来创建。 var expression = / pattern / flags; var expression = new RegExp( pattern / flags ); var expression = new RegExp( patternStr, flags ); // example var regexp = /regexp/g; var regexp = new RegExp('r
糊糊糊糊糊了
2018/05/09
1.4K0
js中的正则表达式(1)
对于正则,著称火星文字,见名知意主要它晦涩难懂,一直以来,看到它总是怕怕的,在平时,也只是简单的用用,其主要是靠搜,还有就是厚着脸皮求助各路大神了,遇到稍复杂些的正则,便无从下手了,令人头疼,即使写完了,过几月在回头看时,发现又看不懂那些符号是什么意思了,终归结底,还是自己使用得太少,认识得太浅,正则是一个非常强大能完成搜索和替换的文本工具,本文为初学者学习笔记心得,适用小白,对于正则,我也一直在学习当中,虽然很是枯燥,但是出去混迟早是要还的,欢迎路过的老师多提意见和指正
itclanCoder
2020/10/28
4.5K0
js中的正则表达式(1)
前端进阶必须知道的正则表达式知识
正则表达式(Regular Expression) 是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个规则字符串,这个规则字符串用来表达对字符串的一种过滤逻辑。
石燕平
2019/12/03
7400
JavaScript正则表达式
正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式,是用于匹配字符串中字符组合的模式。
Leophen
2019/08/23
8360
正则表达式常见用例 原
正则表达式是用于匹配字符串中字符组合的模式。在js中,正则表达式也是对象,这些对象被用于RegExp的exec和test方法,以及String的match、replace、search和split方法 可以使用2种方法之一构建一个正则表达式 (1)正则表达式字面量   /pattern/flags   flags:修饰符   const regex = /ab+c/; (2)调用RegExp对象的构造函数 new RegExp(pattern [, flags])   let regex = new RegExp("ab+c");
tianyawhl
2019/04/04
6340
JavaScript正则表达式
正则表达式是一个拆分字符串并查询相关信息的过程。 正则表达式通常被称为一个模式(pattern),是一个用简单方式描述或者匹配一系列符合某个语法规则的字符串。
奋飛
2019/08/15
9520
正则表达式
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 特殊符号:
爱编程的小明
2022/09/06
7190
正则表达式
JS正则表达式--从入门到精分
正则表达式是被用来匹配字符串中的字符组合的模式 在JavaScript中,正则表达式也是对象 这种模式可以被用于 RegExp 的 exec 和 test 方法 以及 String 的 match、replace、search 和 split 方法 创建一个正则表达式 字面量 var re = /http\:\/{2}/; re.test('http://jobs.douban.com') //true 构造函数 //用构造函数创建正则往往要对特殊字符双重转义var re = new RegExp('htt
江米小枣
2020/06/15
1.5K0
正则表达式
一、概述 正则表达式(regular expression)是一种表达文本模式(即字符串结构)的方法,有点像字符串的模板,常常用作按照“给定模式”匹配文本的工具。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。 JavaScript通过内置对象RegExp支持正则表达式,有两种方式创建正则表达式对象。例如,如果我们想匹配字符串中所有"at"的实例,可以这么写: 第一种:使用字面量,以斜杠表示开始和结束。 var
小胖
2018/06/27
5430
js正则表达式
用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false
星辉
2019/01/15
7.4K0
玩转 JavaScript 正则表达式
腾讯IVWEB团队
2017/03/13
4.3K0
相关推荐
【JS】128-重温基础:正则表达式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文