var str = '我有一个邮箱, 是 abc@itcast.cn, 还有 abc@126.com, 和 1234567@qq.com';
var r = /([a-zA-Z\d]+)@([a-zA-Z\d]+(?:\.[a-zA-Z\d]+)+)/g;
// var res = r.exec( str );
var res;
while ( res = r.exec( str ) ) {
console.log(res)
console.log( '邮箱是: ' + res[ 0 ] + ', 用户名: ' + res[ 1 ] + ', 主机名: ' + res[ 2 ] );
}
贪婪模式
凡是在正则表达式中, 涉及到次数限定的, 一般默认都是尽可能的多匹配。
取消贪婪模式. 在次数限定符后面加上 ?。
多个贪婪在一起的时候的强度:第一个最强 后面强度一样。
// 一般模式
/(\d+)(\d+)(\d+)/.exec('1234567');
// '12345','6','7'
// 取消贪婪模式
/(\d+?)(\d+)(\d+)/.exec('1234567');
// '1','23456','7'
用于模式匹配的String方法
String支持4种使用正则表达式的方法。如下:
- String.prototype.serach(/regExp/g);
- String.prototype.replace(/regExp/g,'string || $1 || fn');
- String.prototype.match(/regExp/g)
- String.prototype.split(/regExp/g)
RegExp对象
RegExp主要方法,exec,test...
常见的用法
1、实现‘123456789123’这样的数字字符串转化为'1,234,567,891'
var str = '123456789123';
str.split('')
.reverse()
.join('')
.replace(/(\d{3})/g,'$1,')
.split('')
.reverse()
.join('')
if(str.startWith(',')) str.slice(1);
phoneNum = str;
formatedPhoneNum = phoneNum.replace(/(\d{3,3})/g, "$1\-");
formatedPhoneNum.slice(-1) === "-" && (formatedPhoneNum = formatedPhoneNum.slice(0,-1));
2、组件封装之中用到的模板
实现核心代码:
var regex = /(\{(\w+)\})/g
for (var i = 0, len = data.length; i < len; i++) {
var template = that.ajaxConfig.template.indexOf("%rank%") >=0
? that.ajaxConfig.template.replace("%rank%",(that.pageNum - 1)*ajaxConfig.data.limit + i + 1)
: that.ajaxConfig.template
while (regex.exec(template)) {
template = template.replace(RegExp.$1, data[i][RegExp.$2])
}
}
调用代码
new Scroll(".k_scroll>.scroll-wrap", {
url: "/tuhoKingPapaActivity/userRankList",
data: {
pageNum: 1,
limit: 15
},
template:`<li>
<span class="row-1 fl">%rank%</span>
<span class="row-2 fl">{nickname}</span>
<span class="row-3 fl">{pnum}</span>
</li>`
})
- JavaScript正则表达式学习笔记(二) - 打怪升级
本文接上篇,基础部分相对薄弱的同学请移步<JavaScript正则表达式学习笔记(一) - 理论基础>.上文介绍了8种JavaScript正则表达式的属性,本文还会追加介绍几种JavaSc ...
- javascript正则表达式 - 学习笔记
JavaScript 正则表达式 学习笔记 标签(空格分隔): 基础 JavaScript 正则表达式是用于匹配字符串中字符组合的模式.在javascript中,正则表达式也是对象.这些模式被用于Re ...
- javascript正则表达式学习(二)--位置匹配
文章首发于sau交流学习社区 一.前言 正则表达式是匹配模式,要么是匹配字符,要么匹配位置. 其实在开发中很少用到匹配位置,本篇文章主要包含: 二.什么是位置 位置:相邻字符之间的位置. 三.如何匹配 ...
- javascript 正则表达式学习教程
正则表达式 就是用某种模式去匹配一类字串的一个公式 RegExp 对象表示正则表达式 Regular Expression 正则表达式是很多程序设计语法都支持的 //①隐式创建 var regexp ...
- JavaScript 正则表达式学习笔记
定义规则让计算机去处理字符串正则表达式写法: //第一种 var reg = new RegExp('ab'); //第二种 var reg = /ab/; 量词:{} [a-z] 从小写a-z [A ...
- JavaScript正则表达式学习笔记之一 - 理论基础
自从年前得空写了两篇文章之后就开始忙了,这一忙就是2个月
- 第一百零五节,JavaScript正则表达式
JavaScript正则表达式 学习要点: 1.什么是正则表达式 2.创建正则表达式 3.获取控制 4.常用的正则 假设用户需要在HTML表单中填写姓名.地址.出生日期等.那么在将表单提交到服务器进一 ...
- 深入浅出的javascript的正则表达式学习教程
深入浅出的javascript的正则表达式学习教程 阅读目录 了解正则表达式的方法 了解正则中的普通字符 了解正则中的方括号[]的含义 理解javascript中的元字符 RegExp特殊字符中的需要 ...
- 正则表达式(javascript)学习总结
正则表达式在jquery.linux等随处可见,已经无孔不入.因此有必要对这个工具认真的学习一番.本着认真.严谨的态度,这次总结我花了近一个月的时间.但本文无任何创新之处,属一般性学习总结. 一.思考 ...
随机推荐
- TensorFlow学习笔记(1):variable与get_variable, name_scope()和variable_scope()
Variable tensorflow中有两个关于variable的op,tf.Variable()与tf.get_variable()下面介绍这两个的区别 使用tf.Variable时,如果检测到命 ...
- 精读JavaScript模式(六),Memoization模式与函数柯里化的应用
假期就这么结束了!十天假就有三天在路上,真的难受!想想假期除了看了两场电影貌似也没做什么深刻印象的事情.流浪地球,特效还是很赞,不过对于感情的描写还是逃不掉拖沓和尴尬的通病,对于国产科幻还是抱有支持的 ...
- python的Web框架,auth权限系统
使用django默认权限系统实现用户登录退出 判断用户是否登录 request.user.is_authenticated 返回的为bool值 一个简单的登录视图范式: # 导包 from djang ...
- Java与c#的一些细节区别
实习中用的语言是c#,第一次接触到这种语言,然后写的过程中,发觉和Java几乎一摸一样,好像根本是无缝切换,但细节仍有很大的区别,称有空总结一波里面的部分细节实现. ps. 我写c#过程中,发觉c#有 ...
- CRC 校验原理及步骤
什么是 CRC 校验? CRC 即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计 ...
- 数据库的DevOps实践
---------------------------------------------------------------------------------------------------- ...
- 数据库设计---PowerDesigner(物理模型和概念模型)
内容 第一种方法:概念模型转物理模型 1.首先新建模型--选择概念模型(CDM) 2.新建实体(学生和卡),设置相应的属性 3.一共四种关系(1:1,1:n,n:1,n:n),根据 ...
- 聚簇索引(聚集索引) 不可作用于GUID类型字段
聚簇索引(又名聚集索引) 不可作用于GUID类型字段,即:数据库中不要把GUID类型作为主键或设置为聚集索引. 聚集索引:索引的物理存储顺序与数据表中行数据物理存储顺序一致(索引存储物理有序). 非聚 ...
- Hive原理总结(完整版)
目录 课程大纲(HIVE增强) 3 1. Hive基本概念 4 1.1 Hive简介 4 1.1.1 什么是Hive 4 1.1.2 为什么使用Hive 4 1.1.3 Hive的特点 4 1.2 H ...
- Java高级类特性(一)
一.继承性 1)继承的使用:权限修饰符 class A extends B{}:2)子类:A 父类(基类 SuperClass):B3)子类继承父类后,父类中声明的属性.方法,子类都可以获取到明确:当 ...