正则表达式备忘(基于JavaScript)
基于JS学习的正则表达式 备忘

e.g.
匹配以0开头的三位或四位区号,以-分格的7或8位电话号码
var reg1 = /^0\d{2,3}\-\d{7,8}$/;
或
var reg1 = new RegExp('^0\\d{2,3}\\-\\d{7,8}$') ;
reg1.test('010-1234567');
reg1.test('010-12345678');
reg1.test('0531-1234567');
reg1.test('0531-12345678');
第一种写法更简洁!
#使用正则表达式分格字符
var str1 = 'a,b c, d';
var result = str1.split(/[\s\,]+/);
console.log(result);
#使用正则表达式提取子串
var reg = /^(\d{3})\-(\d{3,8})$/;
var arr = reg.exec('010-123456');
reg.exec的返回值:匹配成功时,[0]为匹配到的整个字符串,后面的元素是每个子串;
匹配失败时返回null;
#正则表达式的贪婪匹配
var reg = /^(\d+)(0*)$/;
reg用来匹配至少一个数字开头并且以任意个0结尾的字符串;
当用reg.exec('123000')时,由于贪婪匹配,所以\d+把后面的000也匹配上了,结果0*只能匹配空字符串;
返回['123000', '123000', '']
#正则表达式的 非贪婪匹配
在 \d+ 后加一个?,即为 \d+?, 如下
var reg = /^(\d+?)(0*)$/;
reg.exec('123000'); 返回['123000, '123', '000']
#正则表达式全局搜索
形式:
var reg = /[a-zA-Z]+Script/g; //指定字母g标志
var str1 = 'JavsScript, VBScript, and ECMAScript';
reg.exec(str1);
reg.lastIndex;
reg.exec(str1);
reg.lastIndex;
reg.exec(str1);
reg.lastIndex;
字母i标志意思是忽略大小写
var reg = /[a-zA-Z]+Script/gi; //指定字母g标志,i忽略大小写
var str1 = 'JavsScript, VBscript, and ECMAscript';
可匹配Script和script
#匹配email
var re = /^\w+\.?\w+\@\w+\.[a-zA-Z]{2,}$/;
匹配
var email = 'abc@163.com';
var email = 'abc.def@test.org';
var email = 'abc@qq.tt';
re.test(email); => true
#匹配带名字的email
var re = /^\<(\w+\s*\w+)\>\s*(\w+\.?\w+\@\w+\.[a-zA-Z]{2,})$/;
匹配
var email = '<abc def> cbd.def@163.com'; // [<abc def> cbd.def@163.com, abc def, cbd.def@163.com]
var email = '<abcdef> cbddef@test.tt'; // [<abc def> cbd.def@163.com, abcdef, cbddef@test.tt]
正则表达式备忘(基于JavaScript)的更多相关文章
- java正则表达式备忘
最近框架和爬虫上常要处理字符串匹配和替换的场景,备忘. 非贪婪模式 比如要匹配html文本中的连接,例如a href="www.abc.com/xyz/o"需要替换为a href= ...
- python之正则表达式备忘
一简介:就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C ...
- JS开发备忘笔记-- Javascript中document.execCommand()的用法
document.execCommand()方法处理Html数据时常用语法格式如下:document.execCommand(sCommand[,交互方式, 动态参数]) 其中:sCommand为指令 ...
- JavaScript 教程学习进度备忘(二)
备忘:之前,只将“JS 教程”学习完毕,这篇记录:“JS HTML DOM ”.“JS 对象”.“JS Window”.“JS 库” 书签:跳过:另外跳过的内容有待跟进 _______________ ...
- [备忘]Asp.net MVC 将服务端Model传递的对象转为客户端javascript对象
<script type="text/javascript"> var jsObject = @Html.Raw(Json.Encode(Model.Objects)) ...
- 基于Prism.Windows的UWP开发备忘
以前做UWP开发都是使用MvvmLight,主要是简单易上手,同时也写了很多MvvmLight的开发系列文章: UWP开发必备以及常用知识点总结 UWP开发之Mvvmlight实践九:基于MVVM的项 ...
- 正则表达式基于JavaScript的入门详解
关于正则表达式,和很多前辈聊起这个知识点时,他们的反馈都比聊其他技术谦逊,而和很多刚入门的程序员讨论时甚至会有觉得你看不起他. 的确,正则表达式从通常的应用来看,的确不难,比如电话,邮箱等验证.语法, ...
- Javascript备忘模式
使用备忘模式,利用了函数的自定义属性,先看一个例子 var test = function (){} test.myAttr = "attr"; 这样,就给test加上了一个自定义 ...
- Nmap备忘单:从探索到漏洞利用(Part 4)
这是我们的Nmap备忘单的第四部分(Part 1. Part 2. Part 3).本文中我们将讨论更多东西关于扫描防火墙,IDS / IPS 逃逸,Web服务器渗透测试等.在此之前,我们应该了解一下 ...
随机推荐
- springMVC 前后台日期格式传值解决方式之一(共二) @DateTimeFormat的使用和配置
无意中发现对于时间字符串转Date类,根本不用自己去写转换类,spring mvc已经实现了该功能,还是基于注解的,轻松省事,使用 org.springframework.format.support ...
- C语言可以给字符数组赋值的方法
分类: C 2012-04-06 10:23 4081人阅读 评论(0) 收藏 举报 语言c 学了这么多年的C语言,突然发现连字符串赋值都出错,真的很伤心. char a[10]; 怎么给这个数组赋值 ...
- Spring Framework简单介绍
Spring Framework 学习java编程不知不觉已经三年时间了,開始的时候,总是喜欢看着视频,然后按部就班的敲打着键盘,每当系统正常执行后.心里乐开了花.最開始的时候,所有的代 ...
- macbook 下SDK Manager 的更新[即使Google被屏蔽了也无所谓]
废话少说,直接说操作步骤: 1. 改动/etc/hosts文件: 右键单击Finder,选择前往目录,输入/private/etc/,敲回车键.将文件/etc/hosts复制到桌面(由于权限受限.无法 ...
- C# 系统应用之注冊表使用具体解释
在平时做项目时,我们有时会遇到注冊表的操作,比如前面我们须要获取IE浏览器地址栏的信息.获取"我的电脑"地址栏输入的目录信息.USB近期使用信息等.注冊表项是注冊表的基本组织单位, ...
- 源代码分析:onAttach, onMeasure, onLayout, onDraw 的顺序。
从前文<源代码解析:dialog, popupwindow, 和activity 的第一个view是怎么来的?>中知道了activity第一个view或者说根view或者说mDecorVi ...
- MQTT服务器搭建--Apollo
尊重原创,我是伸手党:https://blog.csdn.net/u012377333/article/details/68943416 1.Apollo下载 下载地址:http://activemq ...
- Django--登录认证
COOKIE 与 SESSION 概念 cookie的使用,不止局限于我们所使用的登录认证,cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此 ...
- C#中Lock静态字段和实例字段
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- C# virtual,override,new 整理
今天仔细学习了一下C#中virtual, override, new关键字,参考了网上的很多资料,现整理一下. Virtual: virtual 关键字用于修饰方法.属性.索引器或事件声明,并使它们可 ...