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

心存正气(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值