博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript正则表达式19例(1)
阅读量:5767 次
发布时间:2019-06-18

本文共 1244 字,大约阅读时间需要 4 分钟。

    这是我给大四学生上《Web程序设计》课时编写的一个例子,共包含了ECMAScript(即JavaScript)正则表达式的19类内容(作为19个小例子),涵盖了ECMAScript正则表达式的所有内容。是我原来用.NET的C#编写的正则表达式例子中的一部分,另外一部分由于ECMAScript不支持,所以无法转换成ECMAScript,例如非回溯模式、逆序正向和逆序负向预搜索

    自认为编写的由浅入深,言简意赅,深入浅出,呵呵~自诩了。

例1:匹配一个数字ID

 
  1. void function reg_01() //匹配一个数字ID  
  2. {  
  3.     var s1 = "12-12345",  
  4.         s2 = "12-1234567",  
  5.         s3 = "1-12345",  
  6.         s4 = "12-1234",  
  7.         s5 = "1212345678";  
  8.     var r = new RegExp("^\\d{2}-\\d{5,8}$""gim");  
  9.     for (i = 1; i <= 5; i++)  
  10.     {  
  11.         t = "alert(s" + i + ".match(r));";  
  12.         eval(t);  
  13.     }  

行1:定义一个无返回值函数;

行3-7:定义了一些字符串,用于正则表达式匹配测试;
行8:定义一个正则表达式,正则表达式是一个对象,所以使用new进行实例化,其中:
^符号表示从行首开始匹配,即前面不能再有其他字符,\d符号表示匹配数字字符,前面之所以还有一个\符号是因为ECMAScript中的字符\表示转义字符,写成\\即表示\字符本身,后面的{2}符号表示它前面的\d只能匹配两次,-符号表示只能匹配-字符,\d符号同样表示匹配数字字符,后面的{5,8}符号表示该数字字符只能匹配至少5次至多8次,最后的$符号表示匹配到字符串结尾,即后面不能再有其他字符,第二个参数的g表示global,即全文匹配,而不是只匹配第一个(匹配多个后形成一个数组,需通过索引访问),i表示ignore,即忽略大小写,m表示multiline,即多行匹配,例如$符号就可以匹配\r\n等;
行9-13:一个简单的for循环,循环5次,这里使用了一个技巧,以简化代码,本来需要调用五次String对象的match()方法来分别测试对象s1到s5,然后再五次调用alert()方法显示结果,显然这样做太麻烦,故而使用了eval()方法,eval()方法就是用来检查传入的字符串是否是一个合法的ECMAScript语句,如果合法,就执行该语句,这样,通过for循环逐一生成要执行语句的字符串表达,然后调用eval()方法就可以了。

运行结果:显然s1和s2是匹配的,s3的前半部分只有一个数字1,s4的后半部分不足5个数字,s5缺少字符-,因此s3、s4、s5都不匹配。

(未完待续……)

本文转自 BlackAlpha 51CTO博客,原文链接:http://blog.51cto.com/mengliao/465827,如需转载请自行联系原作者
你可能感兴趣的文章
通过XAML Islands使Windows桌面应用程序现代化
查看>>
区块链现状:从谨慎和批判性思维看待它(第二部分)
查看>>
苹果公司透露Siri新发音引擎的内部原理
查看>>
GCM 3.0采用类似方式向Android、iOS和Chrome发送消息
查看>>
如何成为一家敏捷银行
查看>>
Oracle在JavaOne上宣布Java EE 8将会延期至2017年底
查看>>
Javascript 深入浅出原型
查看>>
简单之极,搭建属于自己的Data Mining环境(Spark版本)
查看>>
Ruby 2.5.0概览
查看>>
如何通过解决精益问题提高敏捷团队生产力
查看>>
Comment2Wechat —— Typecho 插件
查看>>
Apache下.htaccess文件配置及功能介绍
查看>>
Magento XML cheatsheet
查看>>
Egg 2.19.0 发布,阿里开源的企业级 Node.js 框架
查看>>
Kubernetes 弹性伸缩全场景解析 (四)- 让核心组件充满弹性 ...
查看>>
使用MySQLTuner-perl对MySQL进行优化
查看>>
Swoole 4.1.0 正式版发布,支持原生 Redis/PDO/MySQLi 协程化 ...
查看>>
开发网络视频直播系统需要注意的地方
查看>>
haproxy mysql实例配置
查看>>
强化学习的未来— 第一部分
查看>>