JavaScript正则表达式19例(1)

  1. 云栖社区>
  2. 博客>
  3. 正文

JavaScript正则表达式19例(1)

余二五 2017-11-15 01:28:00 浏览470
展开阅读全文

    这是我给大四学生上《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,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
余二五
+ 关注