当前位置: 首页 > news >正文

九曲黄河万里沙,浪淘风簸自天涯 — 正则表达式

为什么80%的码农都做不了架构师?>>>   hot3.png

心存正气(be good),艺不压身(be great)。幼年间习得的一句话,曾几何时,坚定了某一段路的走法。无奈窗头月落,曾经想要燎原的星火自始至终都在忽闪忽烁,欲灭不灭,欲灼不灼。今天回到这年少万兜鍪的起点,重新拾起这句话,为的不是要勇闯天涯,而是 不辜负这窗外的太平天下。

言及光辉岁月,到了今天想说还能从容说的,就只剩下那年c语言的一枝梨花压海棠了。初入大学靠着一时血勇拼下了c语言全班第一,今日回想也是劲儿作大了,以至往后的数据结构,计算机网络都是像拖死驴一样拖过的,痛苦至极鬼知道。由着这经历也绝了我技术立身的念想,但天命所归,顺之昌,逆之亡,由天不由人,也由人不由天。所以我现在是一个coder,技专前端,一边做匠,一边为文,寄希望匠立其身,文传其家。

书归正言,正则表达式学艺之初讳莫如深,辄尝不遂,后间有触用,经世日久,也明白了大概,男儿天职保家眷,赶上某家主公临近毕业要出来经世,千行万作,终究随了我,但一入侯门深似海,知无尽,学无边,没有捷径寻给她,只能时时劝勉,好在前人播种后人收,有我为她牵马执鞭,但愿能够长路多坦途。

个人认为后端比前端用正则的地方多且复杂,后端用正则处理富文本编辑器生成的字符串,可以直接吐出图文混排的前端结构,两个字,略猛。 前端用正则多是校验邮箱,限制中文输入,解析url之类的,都是小功能,但也花样不少。我在业务上第一次用到正则是要在一个抽奖活动中校验手机号和身份证号。

我记述一下里头正则相关的实现

檄文开征讨,声明始程序,正则像大多数js变量一样有两种声明方式

var lbPattern1 = new RegExp("a");
var lbPattern2 = /a/;

上面的是用RegExp()构造函数的实例化来声明,下面的是用引号包裹字符的直接量的方式来声明。孰好孰不好,主流认为下面的好,除了更简洁,也有其他的原因,这个前辈说的详细http://my.oschina.net/bothyan/blog/125668

正则相关的方法有7种,RegExp 对象自身的方法3种:compile、exec、test,支持正则表达式的 String 对象的方法4种:search、match、relpace、split,当this指向是RegExp 对象,也就是“.方法”点前头是正则的时候用的是前三种,点前头是字符串的时候用的后四种,这里之前有些confuse某家主公,所以着重说与她知道。这些方法具体的使用有个地方说的很明白http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp,我不再多说,就介绍一下我用的test方法,test方法可以检索字符串中指定的值,返回布尔值,简单好用美得很。

手机号码和身份证是有规律的,手机号码规律:第一位是“1”(^1)、第二位或3或4或5或7或8([ 3 | 4 | 5 | 7 | 8])、总共11位剩下的9位都是数字(\d{9}$),身份证规律:15或18位的数字(^(\d{15}$|^\d{18}$)、或者17位的数字加最后一位X或x(^\d{17}(X|x))$)

跑一下

var regPhone = /^1[3|4|5|7|8]\d{9}$/,regId = /^(\d{15}$|^\d{18}$|^\d{17}(X|x))$/;
var strPhone = "18378654152",strId = "41038112112456753655";
if(!regPhone.test(strPhone)){
	console.log("请输入正确手机号");
}
if(!regId.test(strId)){
	console.log("请输入正确身份证号");
}

这是抛砖引玉,正则表达式博大精深,能玩出花儿的多的是,希望看到的包括某家主公能够吃馒头拉花卷。

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/iamllb/blog/730910

相关文章:

  • 【PHP】函数explode和split的区别
  • IIS下配置PHP
  • OGNL表达式介绍
  • CSS——NO.8(代码简写)
  • Sqli-labs less 10
  • Crontab创建定时任务
  • 使用maven进行测试设置断点调试的方法
  • Oracle 11gR2 RAC 常用维护操作 说明
  • 分布式任务队列Celery
  • POJ1323 Game Prediction(贪心)
  • 过滤squidlog中各个链接的大小
  • 我的Java后端书架 (2016年暮春3.0版)
  • linux常用命令简介
  • 云平台统计人员在线数的办法
  • Timesten常用命令
  • CSS相对定位
  • HTTP--网络协议分层,http历史(二)
  • JavaScript设计模式与开发实践系列之策略模式
  • mysql_config not found
  • PHP那些事儿
  • Python连接Oracle
  • React-flux杂记
  • ReactNativeweexDeviceOne对比
  • Solarized Scheme
  • Vue ES6 Jade Scss Webpack Gulp
  • 阿里云购买磁盘后挂载
  • 搭建gitbook 和 访问权限认证
  • 马上搞懂 GeoJSON
  • 思维导图—你不知道的JavaScript中卷
  • 微信开放平台全网发布【失败】的几点排查方法
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 我从编程教室毕业
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #AngularJS#$sce.trustAsResourceUrl
  • $ git push -u origin master 推送到远程库出错
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (二)JAVA使用POI操作excel
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (六)激光线扫描-三维重建
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (四)Android布局类型(线性布局LinearLayout)
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)Unity3DUnity3D在android下调试
  • (转)创业家杂志:UCWEB天使第一步
  • .a文件和.so文件
  • .gitattributes 文件
  • .NET Core中Emit的使用
  • .Net下的签名与混淆
  • @property python知乎_Python3基础之:property
  • @Responsebody与@RequestBody