正则表达式的实践demo
正则表达式十分强大,几乎在所有框架中处处可以看到,下载框架源码仔细阅读肯定可以发现。在项目应用中也经常需要正则的帮助,举个栗子,我们常需要用到的表单验证输入。。。。其实还有很多,不一一道出,在这里我搜集了几个实例,一来可以丰富对使用正则这方面的知识,二来动手实践正则的应用有助于理解和加深印象。
(1)String类的Capitalize,实现首字母大写
String.prototype.capitalize = function(){
return this.replace(/(^|\s)([a-z])/g,function(m,p1,p2){
console.log(m); //输出为正则匹配的子字符串
console.log(p1); //输出为分组1捕获的文本
console.log(p2); //输出为分组2捕获的文本
return p1+p2.toUpperCase();
})
}
console.log('i am a boy '.capitalize());
输出结果为:
I Am A Boy
(2)给出一段有成绩的字符串,匹配出里面的分数,然后比较每一项和平均分的大小
var s = "张三56分, 李四74分, 王五92分, 赵六84分";
var a = s.match(/\d+/g);
var avg = a.reduce(function(obj, item){ return obj + parseFloat(item);},0) / a.length;
var result = s.replace(/(\d+)分/g, function(){
console.log(arguments[0]);//XX分
console.log(arguments[1]);//XX
var n = parseFloat(arguments[1]); return n + "分" + "(" + ((n > avg) ? ("超出平均分" + (n - avg)) : ("低于平均分" + (avg - n))) + "分)";
});
console.log(result);
输出结果为:
张三56分(低于平均分20.5分), 李四74分(低于平均分2.5分), 王五92分(超出平均分15.5分), 赵六84分(超出平均分7.5分)
(3)给出一段含有字符实体的字符串,转换为所表示的字符
String.prototype.deentityify = function(){
var entity = {
quot : '"',
lt : '<',
gt : '>'
};
return function(){
return this.replace(/&([^&;]+);/g,function(a,b){
//console.log(a);输出匹配模式的字符串,如<
//console.log(b);输出与模式中的子表达式匹配的字符串,如lt
var r = entity[b];
return typeof r === 'string' ? r : a;
});
};
}();
document.writeln('<">&aa;'.deentityify());
输出结果为:
<">&aa;
由于正则的应用实在太多了,不能将它们穷举出来,不过以后笔者会不断积累并且更新更多实例demo,好了,关于正则的总结就到这里,阿里嘎多~
正则表达式的实践demo的更多相关文章
- c#正则表达式最简demo
各个语言的正则表达式规则略有不同 项目中用到,所以将这个最简单的demo记录 using System; using System.Collections.Generic; using System. ...
- 常用正则表达式和一些demo
一.校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ ...
- DevOps - 从渐进式交付说起(含实践 Demo)
作者:CODING - 王炜 1. 开篇 如果让你主导一款千万.甚至亿级用户产品的功能迭代,你会怎么做?你需要面对的挑战可能来自于: 商业战略的变化带来新的产品诉求,而产品的任何改动哪怕仅是界面调整, ...
- springboot+dubbo+zookeeper微服务实践demo
微服务化越来越火,实际上是应互联网时代而生的,微服务化带来的不仅是性能上的提升,更带来了研发组织的更加便利,协作更加轻松,团队效能更高. 当然不能为了技术而技术,我们需要切合实际的对业务进行划分,降低 ...
- 遗传编程(GA,genetic programming)算法初探,以及用遗传编程自动生成符合题解的正则表达式的实践
1. 遗传编程简介 0x1:什么是遗传编程算法,和传统机器学习算法有什么区别 传统上,我们接触的机器学习算法,都是被设计为解决某一个某一类问题的确定性算法.对于这些机器学习算法来说,唯一的灵活性体现在 ...
- linux 正则表达式与实践
正则表达式基础 准备 (1)alias grep='grep --color=auto' 易于显示 (2)LC_ALL=C,字符集,设置环境变量,字符顺序 基础正则 1)^word 匹配以Word开 ...
- spring-aop思想实践demo
需求: 例如我们需要有一个类中每个方法执行前都需要做一个权限校验,必须是有特定权限的账号才能完成该方法的操作. 解决方案: 1.使用父类继承方式,书写该类的父类,然后在父类中定义一个checkPri的 ...
- 单点登录的实践demo
https://github.com/deadzq/web-sso-server 统一认证中心 https://github.com/deadzq/web-system-client1 用户客户端 结 ...
- 【重点突破】—— Vue2.0 transition 动画Demo实践填坑
前言:vue1.0版本和2.0版本的过渡系统改变是很大的,具体请详看文档介绍.本文转载自郭锦荣的博客,一共列举了四种transition的使用实践,分别是css过渡.css动画.javascript钩 ...
随机推荐
- c3中基本动画
动画:是CSS3中具有颠覆性的特征之一,可通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果:. 必要元素: a.通过@keyframes指定动画序列:自动补间动画,确定两个点,系统会 ...
- 基于python-opencv3的图像显示和保存操作
import cv2 as cv import numpy as np #导入库 print("------------------------ ...
- 【离散数学】 SDUT OJ 偏序关系
偏序关系 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 给定有限集上二元关系的关系矩 ...
- 5、用Numpy实现结构体
1.结构数组: 在C语言中我们可以通过struct关键字定义结构类型,结构中的字段占据连续的内存空间,每个结构体占用的内存大小都相同,因此可以很容易地定义结构数组.和C语言一样,在NumPy中也很容易 ...
- 数据库分库分表配置sharding-jdbc
@Bean(name = "shardingDataSource", destroyMethod = "close") @Qualifier("sha ...
- Android File文件存储功能
1.介绍 2.使用方法 3.文件存储位置 4.java后台代码 package com.lucky.test47file; import android.support.v7.app.AppCompa ...
- pip 使用代理
pip install -i https://mirrors.aliyun.com/pypi/simple/ opencv-python 红色部分 代表使用 阿里云 代理 安装 pip
- C++_IO与文件4-简单文件的输入与输出
通过键盘输入和屏幕输出被称为是控制台输入/输出: 更广义上讲控制台的输入/输出也是一种特殊的文件输入/输出: 当使用cin进行输入时,程序将输入视为一系列的字节,其中的每个字节都被解释成字符编码: 不 ...
- DP小小结
入门题 : [Luogu1441]砝码称重 , [NOIP2015]子串 [AHOI2009]中国象棋 , 详见代码 [HNOI2007]梦幻岛宝珠 , 详见代码 [NOIP2012]开车旅行 , 没 ...
- python之拷贝(深浅)
深浅拷贝 深浅拷贝分为两部分,一部分是数字和字符串另一部分是列表.元组.字典等其他数据类型. 数字和字符串 对于数字和字符串而言,赋值.浅拷贝和深拷贝无意义,因为他们的值永远都会指向同一个内存地址. ...