从某本书上得知:“正则表达式”这个词起源于中世纪数学,当时一个名叫StephenKleene的数学家,使用了一个名为“正则”的数学符号描述自动计算模式。当然这和如今的正则表表达式没有半毛钱关系,但是正则表达式被创造出来却是借鉴了这个"自动计算模式"的思想。

众所周知,检验邮箱,电话等等是否正确往往用一行正则代码就可以实现,但是那行代码初看真NM晦涩难懂,但是在学会之后就会知道它是如此可爱,随手写一行飘逸的正则代码是一件多么装逼的事情啊,哈哈。。。just joking。。。接下来我详细说明:
所谓正则表达式就是计算机界的人们提前规定好的一套匹配字符串的规则,所以咋们自己要想实现检验一串字符是咋们规定的只要按照这套规则写一行代码就行。看一个例子:
比如有编码格式9999-9999,前4个位0-9的任意数字,第四位有个-,后四位又是0-9的任意数字,咋们就可以写这样一行正则

function isCode = function(str){return /^\d{4}-\d{4}$/.test(str);
}

咋们在chrome中检验一下:

哈哈,成功出现预期结果,接下来我解释一下:
/^代表一个正则的开始,$/代表一个正则的结束,\d代表匹配任意数字【0-9】,{}加其里面的数字代表重复的次数。正则表达式从左到右按照你的正则代码依次匹配,要是全部匹配成功返回true。是不是很简单。接下来我列出JavaScript全部的正则字符代表的含义:

\t : 水平制表符
\b: 空格
\v: 垂直制表符
\f: 换页符
\r: 回车
\n: 换行符
\cA-\cZ: 控制符,例如:\cD匹配一个Control + D
\x0000-\FFFF: 十六进制Unicode码
\x00:\xFF: 十六进制ASCLL码
. :匹配除了新行(\n)之外的任意字符
\d: 匹配任意数字等价于正则式[0-9]
\D: 匹配任意非数字等价于正则式[^0-9]
\w: 匹配包括下划线的任意单词字符,等价于正则式[A-Za-z0-9]
\W: 匹配任意非单词字符,等价于正则式[^A-Za-z0-9]
\s: 匹配任何空白字符
\S: 匹配任何非空白字符
\b: 匹配单词边界
\B: 匹配非单词边界

有密集恐惧症的人看了上面这些恨不得掐死本宝宝吧,其实我写上面这些的初衷是为了让大家查的,而不是让大家看的,大家可以把上面这张表复制到本地,这样需要用到什么的时候自己查表就行。有了这些及富意义的正则字符以后,咋们还需要一些简单的语法,这样就能构建出一个完备的正则体系,然后就可以静静的装逼了,哈哈~~~~

1.有三个字符可以做后置定语(ps:宝宝这两天苦逼的修炼英语,觉得定义神似),分别是:i,让正则表达式不区分大小写;g,匹配模式中所有实例;m,允许匹配多行。

例:/test/i 不仅可以匹配test,还可以匹配Test,TEST,tEsT等等(ps:正则可以仅仅用/来画界,而不必严格按照/^为起始,$/为终构建)

2.匹配一类字符用[ ]

例:我们想要匹配abc中任意一个字符,可以写成[abc],有时候我们需要匹配一组字符中以外的字符如[^abc]代表除了adc这三个字符以外的字符,要是我们要匹配abcdefg等等这么长的字符太长,我们也可以写成[a-z]代表匹配a-z之间任意一个字符。

3.转意用\加要转意的字符

例:我们想要匹配/,但它代表正则的边界,这时我们就可以写成\ /

4.动词不等式等等做后置定语的乱七八糟的语法(ps:下面的东东全加在一个局部正则的后面)

?:正则是可选的

例:/t?est/ 可以匹配/test/和/est/

+: 一个字符出现一次或多次

例:/t+est/可以匹配test,tttest , ttttttttttest

*:匹配一个字符出现一个或多次

例:/t*est/可以匹配est , test ,ttttttest

{ }:里面指定一个数字来表示重复次数:

例:/b{5}/匹配bbbbb。可以用区间来表示重复次数的区间:/b{5,10}表示任何含有5个至10个b字符的字符串。要是/b{5,}第二个参数不写就表示匹配任何4个或以上连续的b字符。

| :代表或

例:/a|b/匹配a或者b字符。/(ab)+|(cd)+/表示匹配出现一个或多次ab或者cd
前面忘记说了,()包裹起来的代表看做一个整体,这里用到了,补上说明

类似于非限制性定语从句的大boss,反向引用

要是咋们想匹配《h1》hellowold《/h1》时有一个简单的方法:
/(《h1》)(\w+)\/\1/其中\1就代表匹配和开头第一串字符一样的一串字符。俗话说越简单的东西越复杂,这就是正则表达式最复杂的部分,被称为captures的反向引用,国人大多将captures翻译为捕获,我总感觉怪怪的,大家自己理解吧。你也可能注意到了,有\1就有\2,有\2就有\3,所谓1生2,2生3,3生万物,这样生着生着就复杂了。
宿舍要熄灯了,还有终极应用篇和这个大boss的详细说明就明天写吧。不过看到这里已经大概学完正则的,可以静静的装逼了。。接下来用咋们学到的知识写一个验证qq邮箱的正则吧:

function isMail(str){return /^(\d+)@(\w+)\.(\w+)$/.test(str);
}

测试一波:

上述测试2215543122就是我的小号qq啦,欢迎妹子加我一起敲代码,聊人生,嘻嘻~~~~

可爱的JavaScript正则表达式(1)相关推荐

  1. JavaScript正则表达式快速判断技巧

    原文:JavaScript正则表达式快速判断技巧 这里是JS的正则的一点心得,并不是最完整的规则汇总,更侧重实际运用中的快速判断,初学者接触正则之后往往会被一堆星号括号给弄晕,有了一些速判技巧就能从整 ...

  2. javascript 正则表达式详解

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

  3. 经典JavaScript正则表达式实战

    来源:http://www.cainiao8.com/web/js_note/js_regular_expression_blueidea.html 目录 1. 正则表达式实战...1    2. 匹 ...

  4. 温故知新 javascript 正则表达式

    温故知新 javascript 正则表达式 转载:http://www.cnblogs.com/libinqq/archive/2008/07/31/1257699.html 很长时间没看 正则表达式 ...

  5. javascript正则表达式小结

    总结了一下javascript正则表达式的内容.表格形式,一目了然.辅以Example图形解释. 一.元字符 二.反义字符 三.转义字符 四.重复匹配 五.分组/捕获 六.贪婪与惰性 七.修饰符 ex ...

  6. JavaScript正则表达式详解(一)正则表达式入门

    JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...

  7. 好程序员web前端分享使用JavaScript正则表达式如何去掉双引号

    为什么80%的码农都做不了架构师?>>>    好程序员web前端分享使用JavaScript正则表达式如何去掉双引号,最近接了一个项目,项目需求需要用js正则表达式过滤掉页面文本域 ...

  8. JavaScript 正则表达式

    JavaScript  正则表达式 版权声明:未经授权,严禁转载! 正则表达式 什么是正则表达式 正则表达式是用来描述一种特定格式的字符规则的表达式. 正则表达式常用语在一段文本中搜索,匹配或者替换特 ...

  9. js php 正则差别,JavaScript正则表达式的浏览器的差异

    JavaScript中的正则表达式在不同的浏览器中得到的结果可能会有差异,下面把正则表达式在五大主流浏览器(IE.Firefox.Chrome.Safari.Opera,以当前版本为准)之间的差异整理 ...

最新文章

  1. 文件_ _android从资源文件中读取文件流并显示的方法
  2. 【一行命令】ubuntu 16.04 LTS安装pip3
  3. 《系统集成项目管理工程师》必背100个知识点-85简述风险识别的原则
  4. 预训练模型对实体的表示能力差?一个简单有效的解法来了!(开源)
  5. Tomcat 服务器介绍和使用
  6. (5)容器级标签和文本级标签
  7. vscode写python_vscode如何编写python?
  8. Asp.net SignalR
  9. 2019西北工业大学程序设计创新实践基地春季选拔赛(重现赛)
  10. 测试员最好跳槽频率是多少?进来看看你是不是符合
  11. mysql read uncomit_mysql配置文件,帮看看
  12. 我要发明计算机作文,我要发明机器人作文700字
  13. python 处理Excel 数据分析
  14. TFT液晶屏-真彩色高亮度高分辨率的液晶显示屏
  15. 邮件发回软件错误信息
  16. rsync: [sender] write error: Broken pipe (32) 问题排查
  17. Android打字机动画,Android 打字机效果
  18. Payoneer取人民币全过程(ATM)
  19. 使用面阵相机进行传送带视频流的拼接
  20. [菜鸟训练]347. 前 K 个高频元素

热门文章

  1. 飞翔机器人动态壁纸_长臂机器人(HandyBot)官方下载_长臂机器人官方安卓v1.0下载_快吧游戏...
  2. 小米6 android play服务,终于来了!小米6升级基于安卓P底层MIUI10 9.5.9开发版,运行非常流畅...
  3. WPF WrapPanel:自动折行面板
  4. html视频不播放视频教程,HTML5:video标签我这视频怎么播放不了?
  5. 能率日式热水、供暖两用炉家族再发新品,打造幸福温水、采暖生活
  6. C语言中对函数指针的调用
  7. asp.net小型牙科诊所诊疗信息系统毕业设计(附源码、运行环境)
  8. 漫威史上最黑暗 美国队长3英雄内战导火索 雷神索尔去哪了?
  9. ObjectARX给CAD发送命令的几种方法
  10. java信息熵抽取关键词算法_tfidf算法lcs算法