论坛首页 Web前端技术论坛

JavaScript内核系列 第6章 正则表达式

浏览 12868 次
精华帖 (13) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-04-30  
呼呼···看完了 收获挺大的~~ 期待下一章~~
顺便看了下lz其他的博客 突然感觉自己菜的不能太菜了 马上离开校园了 发现大学四年好像啥都没有学到 以后要学习的东西还有好多好多··
0 请登录后投票
   发表时间:2010-04-30  
xiaoyayaday 写道
呼呼···看完了 收获挺大的~~ 期待下一章~~
顺便看了下lz其他的博客 突然感觉自己菜的不能太菜了 马上离开校园了 发现大学四年好像啥都没有学到 以后要学习的东西还有好多好多··


呵呵,慢慢来,都是一步一步走过来的。其实我的水平也一般,勉强算是一个合格的程序员,不过你能意识到自己的缺点是最好的,老觉得自己多厉害多厉害就危险了。
0 请登录后投票
   发表时间:2010-05-01  
非常棒的教程
0 请登录后投票
   发表时间:2010-05-02  
谢谢,真不错,你真是我的偶像。:)
0 请登录后投票
   发表时间:2010-05-03  
正则表达式能不能根据前的数字来判断后面数字的取值范围呢?
0 请登录后投票
   发表时间:2010-05-05  
   var pid = /^[\d{15}|\d{18}]$/;//身份证    
   println(pid.test("4302211985101050184355555555555555555"));//输出为false  

关于你修改的身份证验证 我在fireFox上测试
发现如果将号码改为15位或者18位 也不能通过测试 任然输入为false
求解
0 请登录后投票
   发表时间:2010-05-05  
jwtiger 写道
   var pid = /^[\d{15}|\d{18}]$/;//身份证    
   println(pid.test("4302211985101050184355555555555555555"));//输出为false  

关于你修改的身份证验证 我在fireFox上测试
发现如果将号码改为15位或者18位 也不能通过测试 任然输入为false
求解


有点夸张,怎么写也不会错到楼主这样

alert(/^\d{15}$|^\d{18}$/.test("430221198510105018"));
alert(/^(?:\d{15}|\d{18})$/.test("430221198510105018"));
alert(/^\d{15}(?:\d{3})?$/.test("430221198510105018"));
alert(/^\d{15}(?=$|\d{3}$)/.test("430221198510105018"));
0 请登录后投票
   发表时间:2010-05-05  
zbm2001 写道
jwtiger 写道
   var pid = /^[\d{15}|\d{18}]$/;//身份证    
   println(pid.test("4302211985101050184355555555555555555"));//输出为false  

关于你修改的身份证验证 我在fireFox上测试
发现如果将号码改为15位或者18位 也不能通过测试 任然输入为false
求解


有点夸张,怎么写也不会错到楼主这样

alert(/^\d{15}$|^\d{18}$/.test("430221198510105018"));
alert(/^(?:\d{15}|\d{18})$/.test("430221198510105018"));
alert(/^\d{15}(?:\d{3})?$/.test("430221198510105018"));
alert(/^\d{15}(?=$|\d{3}$)/.test("430221198510105018"));


谢谢你的指正。不过我没有想明白:/^[\d{15}|\d{18}]$/这个为何不行?可否给我解释下?谢谢了
0 请登录后投票
   发表时间:2010-05-05  
正确的应该是这样:
/^(\d{15}|\d{18})$/


我想,更深层次的原因是中括号表示一个字符,而小括号表示的是一组字符。
比如:
[a-zA-Z]表示一个字符,或者[abc],表示的是a或b或c,这样的话,之前的表达式就错了,需要用括号。
0 请登录后投票
   发表时间:2010-05-05  
jwtiger 写道
   var pid = /^[\d{15}|\d{18}]$/;//身份证    
   println(pid.test("4302211985101050184355555555555555555"));//输出为false  

关于你修改的身份证验证 我在fireFox上测试
发现如果将号码改为15位或者18位 也不能通过测试 任然输入为false
求解


不好意思,这个表达式有错误,应该修改为小括号,而非中括号:
   var pid = /^(\d{15}|\d{18})$/;//身份证


很感谢你的细心测试,我当时测的不够仔细,只测试了返回false的情况,没有测试返回为true的。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics