zoukankan      html  css  js  c++  java
  • 正则表达式的实践demo

      正则表达式十分强大,几乎在所有框架中处处可以看到,下载框架源码仔细阅读肯定可以发现。在项目应用中也经常需要正则的帮助,举个栗子,我们常需要用到的表单验证输入。。。。其实还有很多,不一一道出,在这里我搜集了几个实例,一来可以丰富对使用正则这方面的知识,二来动手实践正则的应用有助于理解和加深印象。

    (1)String类的Capitalize,实现首字母大写

    1 String.prototype.capitalize = function(){
    2     return this.replace(/(^|s)([a-z])/g,function(m,p1,p2){
    3         console.log(m);           //输出为正则匹配的子字符串      
    4         console.log(p1);          //输出为分组1捕获的文本
    5         console.log(p2);         //输出为分组2捕获的文本
    6         return p1+p2.toUpperCase();
    7     })
    8 }
    9 console.log('i am a boy '.capitalize());

     输出结果为:

      I Am A Boy

    (2)给出一段有成绩的字符串,匹配出里面的分数,然后比较每一项和平均分的大小

     1 var s = "张三56分, 李四74分, 王五92分, 赵六84分";
     2 var a = s.match(/d+/g);
     3 var avg = a.reduce(function(obj, item){ return obj + parseFloat(item);},0) / a.length; 
     4 var result = s.replace(/(d+)分/g, function(){
     5      console.log(arguments[0]);//XX分
     6      console.log(arguments[1]);//XX
     7     var n = parseFloat(arguments[1]);
     8 
     9     return n + "分" + "(" + ((n > avg) ? ("超出平均分" + (n - avg)) : ("低于平均分" + (avg - n))) + "分)";
    10 });
    11 console.log(result);

    输出结果为:

      张三56分(低于平均分20.5分), 李四74分(低于平均分2.5分), 王五92分(超出平均分15.5分), 赵六84分(超出平均分7.5分)

    (3)给出一段含有字符实体的字符串,转换为所表示的字符

     1 String.prototype.deentityify = function(){
     2     var entity = {
     3         quot : '"',
     4         lt   : '<',
     5         gt   : '>'
     6     };
     7 
     8     return function(){
     9         return this.replace(/&([^&;]+);/g,function(a,b){
    10             //console.log(a);输出匹配模式的字符串,如&lt;
    11             //console.log(b);输出与模式中的子表达式匹配的字符串,如lt
    12             var r = entity[b];
    13             return typeof r === 'string' ? r : a; 
    14         });
    15     };
    16 }();
    17 document.writeln('&lt;&quot;&gt;&aa;'.deentityify());

    输出结果为:

      <">&aa;

      由于正则的应用实在太多了,不能将它们穷举出来,不过以后笔者会不断积累并且更新更多实例demo,好了,关于正则的总结就到这里,阿里嘎多~

  • 相关阅读:
    循环事件绑定和原型的应用
    小知识随手记(四)
    JavaScript数组与字符串常用方法总结
    jquery获得select option的值和对select option的操作
    前端图片上传前预览
    CSS 的优先级机制总结
    汇编语言学习笔记(8)——数据处理的基本问题
    SPOJ 1811LCS Longest Common Substring
    mysql 安装完毕后登陆不了mysql的 shell 即mysql&gt;遇到:ERROR 1045 (28000): Access denied for user 'root'@'localhost‘
    [LeetCode]Power of Two
  • 原文地址:https://www.cnblogs.com/DTBelieve/p/5373547.html
Copyright © 2011-2022 走看看