- 浏览: 326334 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
zhangliguoaccp:
对于女人不要太看重吧,喜欢你的自然留下,你若盛开,蝴蝶自来!
遇见她 -
yiqi1943:
springtest支持的spring版本最低是多少啊
Spring Test -
WITLP:
爱,我只知道你一部分的事情,没想到你从华智出来这么坎坷
2009 为什么待到毕业时? -
WITLP:
哈哈,原来你就是传说中的欧阳平?
ANT 简单使用 -
bo_hai:
谢谢。总结的很好。
工具 PL/SQL 快捷键
规范用"",迫不得已才用''
- 正则表达式Regular Expression,简称regex或者regexp
- 是一种来描述文本模式的特殊语法。
- 一个正则表达式是由普通字符(例如字符'a'到'z','0'到'9')以及特殊字符(称为元字符,如:"\","*","?"等)组成。 简单的说一个正则表达式就是你需要匹配的字符串。
例如,正则表达式"A*B"匹配字符串"ACCCCB"但不匹配"ACCCCC".
JavaScript中正则表达式是由两个"/"所包围,由英文,数字和特殊字符组成
- 1 匹配模式
i(ignore case) ,g(global search),m(multiline search)三个匹配模式
var reg01 = /abc/; var reg02 = /a{1,2}b/g; var reg03 = /a{1,2}b/ig; 1,'i'为'ignore case',即忽略大小写 2,'g'为'global search',即全局搜索 3,'m'为'multiline search',即多行搜索 <script> // i alert(/abc/.test('Abc')); //false 不忽略大小写 alert(/abc/i.test('Abc'));//true 忽略大小写 // g alert(/abc/.test('Abcabc'));//true 默认是全局搜索? alert(/abc/g.test('Abcabc')); // true 全局搜索 // m alert('aa\rabc'); alert(/^abc$/m.test('aa\nabc')); // true alert(/^abc$/.test('aa\nabc')); //false; alert(/abc/.test('aa\nabc')); //ture; </script>
不要将全局 RegExp 对象与 正则表达式 对象混淆。尽管听起来像是一回事,但它们是截然不同的。全局 RegExp 对象的属性包含不断更新的关于每个匹配出现的信息,而正则表达式对象只包含出现正则表达式匹配的信息。
RegExp 例子:
function matchDemo(){ var s; var re = new RegExp("d(b+)(d)","ig"); var str = "cdbBdbsbdbdz"; var arr = re.exec(str); s = "$1 contains: " + RegExp.$1 + "\n"; s += "$2 contains: " + RegExp.$2 + "\n"; s += "$3 contains: " + RegExp.$3; return(s); }
- 2 特殊字符
. 除\n之外的所有字符
\ 转义字符,例如'\n'匹配一个换行符, '\\'匹配'\', '\)'匹配')' alert('a\nb'); alert('a\rb');
^ 匹配文本的开头 如果正则表达式的'多行搜索'属性被设置即'm'属性 ^ 也匹配每个换行符'\n'或者回车符'\r'之的
位置。
例如:
alert(/^b$/m.test('a\nb')); // true
alert(/^b$/.test('a\nb')); // false
注意:如果正则表达式不起头不加上 /^,则在字符串中找到与正则匹配的就返回true,不需要从头开始匹配,相当
于全文搜索匹配,不必要从头匹配
$ 匹配文本的末尾 如果正则表达式的'多行搜索'属性被设置即'm'属性 ^ 也匹配每个换行符'\n'或者回车符'\r'之前的位
置。
例如:
alert(/^bc$/m.test('bc\n')); // true
alert(/^bc$/.test('bc\n')); // false
* 0次或多次
将前一个字符或子表达式匹配0次或多次,等同于{0,}
例如:
alert(/zo*/.test('z')); // true
alert(/zo*/.test('zoooooooooo')); //true
alert(/zo{0,}/.test('sdzjo')); //true
+ 1次或多次
将前一个字符或子表达式匹配1次或多次,等同于{1,}
? 0次或1次
将前一个字符或子表达式匹配0次或1次
例如:
alert(/^oy?$/.test('o')); //true
alert(/^oy?$/.test('oy')); //true
alert(/^oy?$/.test('oyy'));//false
alert(/oyp/.test('o\roypoyp')); // true
alert(/^oyp$/.test('o\roypoyp'));//false
{n} n次
将前一个字符或子表达式匹配n次
例如:
alert(/o{2}/.test('poy')); // false
alert(/o{2}/.test('pooy')); // true
{n,} 至少n次
将前一个字符或子表达式匹配至少n次
{n,m} 至少n次,至多m次
将前一个字符或子表达式匹配至少n次,之多m次
alert(/o{1,3}/.test('py')); //false
alert(/o{1,3}/.test('pooy')); //true
alert(/o{1,3}/.test('pooooooy')); // true
注意:匹配前三个'o' 我觉得这样的话如果碰到一个o就返回,主要在^$这中间起作用
? 这里的?与上面的?不同,这里有条件限制
条件 这个 ? 跟在数量限定字符后 (*,+,?,{n},{n,},{n,m})表示前面的匹配为'非贪婪'模式
所谓非贪婪模式表示匹配尽可能少的字符。
例如
alert(/o+?/.test('poooo')); //true 仅仅匹配第一个o 可能这个速度上要快很多,匹配就返回
alert(/o+/.test('poooo')); //true 匹配所有的o
(pattern) 匹配'pattern'的模式,并返回匹配的结果
结果可以用match和$1..获取,如果要匹配(的话,要用\(和\) 转义
alert(/(\d)/.test(1111)); //true
alert('12345'.match(/(\d)/)); // 1,1
//针对match函数如果没有设置全局标志 (g),数组的0元素包含整个匹配,而第 1 到 n 元素包
含 了匹配中曾出现过的任一//个子匹配。这//相当于没有设置全局标志的 exec 方法。如果设置了
全局标志,元素0到n中包含所有匹配。
alert('12345'.match(/(\d)/g));// 1,2,3,4,5
/(\d\d)/g.test('12345');
alert(RegExp.$1); // 12
/(\d+)/.test('12345');
alert(RegExp.$1);//12345
var a = new RegExp('(\\d)/g');
a.exec('12345');
alert(RegExp.$1); // 12345
(?:pattern) (非捕获匹配) 经常与或"|"一起连用
/(\d\d)/g.test('12345');
alert(RegExp.$1); // 12
/(?:\d\d)/g.test('12345');
alert(RegExp.$1); // 空字符串(注意这里!!!)
它不返回结果速度很快
(?=pattern) 定位于'pattern'模式的匹配之前 (非捕获匹配),此匹配模式不占用字符,也就是
是说当发生一个匹配后,对下一个匹配的搜索将直接从前一个匹配后开始
alert(/Windows(?=95|2000)/.test("Windows3.1")); //false
alert(/Windows(?=95|2000)/.test("Windows2000")); //true
alert(RegExp.$1); // 空字符串 注意这里
alert(/Windows(95|2000)/.test("Windows2000")); //true
alert(RegExp.$0) //undefined $1 从1开始
alert(RegExp.$1); // 2000 注意这里
(?!pattern) 与(?=pattern) 差不多,只不过取的反值
alert(/Windows(?!95|2000)/.test("Windows3.1")); //true
alert(/Windows(?!95|2000)/.test("Windows2000")); //false
alert(RegExp.$1); // 空字符串 注意这里
x|y 匹配x或y
z|food 可以匹配 z或者food
(z|f)ood 可以匹配zood或者food
alert((/(z|f)ood/).test('z')); // false
[xyz] 一个字符集合,匹配该集合中的任意一个字符
alert(/[xyz]/.test("axyzdf")); //true
alert(RegExp.$1);// 空字符串
alert(/([xyz])/g.test("axyzdf"));// 注意打了括号
alert(RegExp.$1); //x 说明只有定义类似(patter)的时候才在RegExp保存值
[^xyz] 一个字符集合,匹配不输入该集合范围中的任意一个字符
alert(/[^123]/.test('123')); //false
alert(/([^123])/.test('1235')); //false
alert(RegExp.$1); // 5 注意 正则打了括号才输出5的,如果没有括号则输出空字符串
[a-z] 一个字符 范围 集合,匹配属于该集合范围中的任意一个字符。
[^a-z] 一个字符 范围 集合,匹配不属于该集合范围中的任意一个字符
\b 匹配一个单词的结尾 单词最后一个字母与空格之间的位置
alert(/yp\b/.test('oyp oo')); //true; 有个空格
alert(/yp\b/.test('oypoo')); //false
\B 匹配一个非单词的结尾(匹配一个非结尾(单词的结尾))
alert(/yp\B/.test('oyp oo')); //false;
alert(/yp\B/.test('oypoo')); //true;
\cx 匹配一个由'x'确定的控制字符
\d 匹配一个数字,等同于[0-9]
\D 匹配非一个数字,等同于[^0-9]
\f 匹配一个填表符 等同于"\x0c" 和 "\cL"
alert('oy\x0c');
alert(/\cL/.test("oy\x0c")); //true
\n 匹配一个换行符,等同于"\x0a"和"\cJ"
例子:
alert("oy\np"); // oy
// p
alert("oy\x0ap");// op
// p
alert("oy\cJp"); //oy\cJp
alert(/\cJ/.test("oy\np")); // true \cJ匹配换行符 注意
\r 匹配一个回车符,等同于"\x0d"和"\cM"
\s 匹配一个空白符,包括空格,制表符合填表符,等同于[\f\n\r\t\v];
\S 匹配一个非空白字符,等同于[^\f\n\r\t\v]
\t 匹配一个制表符,等同于"\x09"和'\cI'
\v 匹配一个垂直制表符,等同于"\0b"和"\cK"
\w 匹配一个英文字符,数字和下划线,等同于[A-Za-z0-9_]
\W 匹配一个非英文字符,数字和下划线,等同于[^A-Za-z0-9_]
\xn 匹配一个‘n’代表的字符
n是该字符的十六进制ASCII编码,必须是两位数
例如
alert("\x41"); // A
alert(/\x41/.test("A")); //true
alert("\x411") // A1
alert(/\x411/.test("A2")); //false
alert(/\x411/.test("A1")); //true
\num num是一个正整数,匹配一个前面匹配返回的的结果
alert(/(.)\1/.test("1")); // false
alert(/(.)\1/.test("11")); // true
alert(RegExp.$1); // 1
注意(.) 匹配任意一个字符
alert(/(.)/.test('123123123123')) // true;
alert(RegExp.$1); // 1
\n 标示一个八进制或者对前面匹配的引用(注意不是匹配返回的结果) ??
\nm 标示一个八进制或者对前面匹配的引用 ??
\nml 标示一个八进制字符串
\un 匹配一个n代表的字符,n是该字符的十六进制Unicode编码,必须是4位的
例如
alert(\u00A9);
- 3创建正则对象的方法
方法1: var reg1 = /\w+/;// 普通创建
方法2: var reg2 = new RegExp("\\w+"); // 用RegExp方法创建
两种方法创建同样拥有 exec(),test(),compile()方法,以及相应的属性,具体见文档
- 4 正则对象的属性和方法
4.1 属性
正则表达式对象的属性有4个:"global","ignoreCase","multiline","source"
var regObj = /^This is a regular String\.\w+/gi;
alert(regObj.global); // true;
alert(regObj.ignoreCase); // true;
alert(regObj.multiline); //false
alert(regObj.source); //^This is a regular String\.\w+
4.2 方法
正则表达式的方法有三个:"compile","exec","test"
4.2.1 compile方法将正则表达式编译成内置的格式,可以提高执行速度
compile(stringPattern,[strFlags]);
<script> var str,regObj,t01,t02,startTime; str = "JLKJLJSDFJLSDJFLSDasdfasdfasdfsdflqwjeoqJJlasjJjkjkasdjJlasjdfljlweljLALAJljasljdlsjfdlajsLAJljsdnflsdjfsdf"; //未编译 regObj = /asdfsdflqwjeoqJJlasjJjkjkasdjJlasjdfljlweljLALAJljasljdlsjfdlajsLAJljsdnfls/g; startTime = new Date(); for(var i = 0 ; i < 500000; i ++) { str.match(regObj); } t01 = new Date() - startTime; //编译后 regObj1 = regObj.compile("asdfsdflqwjeoqJJlasjJjkjkasdjJlasjdfljlweljLALAJljasljdlsjfdlajsLAJljsdnfls","g") var startTime2 = new Date(); for(var i = 0 ; i < 500000; i ++) { str.match(regObj1); } t02 = new Date() - startTime2; alert("未编译时间="+t01+"\n"+"编译后="+t02); </script> 可以看出是提高了效率但是非常不明显。 4.2.2 exec方法 var str = "The quick brown fox jumps over a lazy dog."; var re = /\w+/g; var arr; while ((arr = re.exec(str))!=null) { document.write("自位置"+arr.index+"至"+arr.lastIndex+" "+arr+"<br>"); } 输出 自位置0至3 The 自位置4至9 quick 自位置10至15 brown 自位置16至19 fox 自位置20至25 jumps 自位置26至30 over 自位置31至32 a 自位置33至37 lazy 自位置38至41 dog 详细信息见文档
- 5 正则与字符串的操作
5.1 字符串的搜索与匹配
search() 方法 返回搜索位置的索引
match() 方法 返回搜索内容
var str = "sdfsdfasdfvderwfvdber";
alert(str.search(/fvd/g)); //9
alert(str.match(/fvd/g)); // fvd,fvd
5.2 字符串替换
alert("pyo love cj".replace(/pyo/,"oyp"));
&It -- <
> -- >
3 正则表达式:
3.1 中文的正则表达式 /^[\u0391-\uFFE5]+$/
var reg = /^[\u0391-\uFFE5]+$/;
alert(/^[\u0391-\uFFE5]+$/.test("我是oy"));
alert(/^[\u0391-\uFFE5]+$/.test("我是欧阳"));
3.2 年龄的正则表达式 /^1[0-9]{0,2}$/
alert(/^1[0-9]{0,2}$/.test(199));//true
发表评论
-
可输入的下拉框,兼容IE6,7,8,9
2013-06-21 14:26 1513有时候因为包含了这一部分导致下拉框不可使用: <! ... -
JS Web前段性能问题
2011-03-29 18:00 861Web前段性能问题 -
JS body.clientWidth,documentElement.clientWidth,clientX
2011-03-29 16:50 1767event的x,clientX,offsetX ... -
自写 js validation 验证框架
2011-02-15 16:32 1678一、背景: 一个 ... -
JS jquery ajax post html
2010-06-30 15:14 1661$(document).ready(function(){ ... -
JS jquery自动补全
2010-06-30 14:18 2607思路: 1 输入字符串,keyup事件,通过输入的字符串去 ... -
JS jquery常用语法
2010-06-30 14:05 924$("#id").val(); $( ... -
JS 过滤特殊字符
2010-06-29 15:44 3133<input type = "text&quo ... -
JS 注册监听
2010-06-22 15:45 1312<div id ="testdiv" ... -
JS Jquery 锁屏
2010-06-22 13:26 2495http://jquery.malsup.com/block/ ... -
JS 判断是否IE浏览器
2010-06-12 12:33 1417var ie = 0/*@cc_on+1@*/ ; 利用IE ... -
JS event获取触发事件的对象
2010-04-21 09:11 1300更多信息查询API <script> <s ... -
JS js控制鼠标左右键和复制粘贴事件
2010-04-12 20:27 3552JS js控制鼠标左右键和 ... -
JS js控制select多选
2010-04-07 10:46 1880<script> function move ... -
JS 转换函数和属性定义范围
2010-04-07 09:54 958<script> //转换函数 eval() ... -
JS 加码解码
2010-04-07 09:52 1531<script> //javascript加码解 ... -
JS 定时任务setTimeout与setInterval
2010-04-07 09:49 2034~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ... -
JS 框架跳转
2010-04-06 13:06 1389<script language="javas ... -
JS prototype例子原型与继承
2010-03-29 16:15 1742prototype 属性 返回对象类型原型的引用。 ... -
JS 获得当前实时日期和时分秒星期 日期比较 当前日期格式化
2010-03-26 13:36 3057这些查API文档,一目了然,这是一个js获得当前实时日期和时分 ...
相关推荐
正则表达式的概念起源于对人类神经系统工作原理的研究,后由Warren McCulloch和Walter Pitts两位科学家发展出数学描述神经网络的新方法,并由Stephen Kleene在此基础上引入了正则表达式的概念。之后,Unix之父Ken ...
正则表达式基础介绍 正则表达式是一种强大的文本匹配工具,它提供了一种灵活的方式来查找、替换或提取字符串中的模式。在JavaScript中,正则表达式通常用于字符串操作,例如验证表单输入、搜索文本以及替换字符等...
JavaScript正则表达式是用于匹配字符串模式的强大工具。在验证邮箱和手机号码时,我们需要创建符合特定规则的正则表达式。对于邮箱验证,通常的正则表达式如下: ```javascript var emailRegex = /^[a-zA-Z0-9._%...
1. JavaScript正则表达式在线测试工具:http://tools.jb51.net/regex/javascript 2. 正则表达式在线生成工具:http://tools.jb51.net/regex/create_reg 这些工具可以帮助开发者快速测试和生成正则表达式,从而提高...
### 正则表达式基础知识与应用 #### 一、正则表达式的定义及用途 正则表达式(Regular Expression)是一种强大的文本处理工具,能够帮助用户查找、替换以及操作特定的字符串或字符组合。它在多种编程语言和操作...
### JavaScript正则表达式教程详解 #### 一、正则表达式概述 正则表达式是一种强大的工具,用于处理文本中的模式匹配与替换。它由一系列普通字符和特殊字符(元字符)组成,用于定义一组规则,从而识别并操作符合...
#### 一、正则表达式基础知识 正则表达式是一种强大的文本处理工具,被广泛应用于各种编程语言中,用于文本的查找与替换、验证等场景。JavaScript同样支持正则表达式的使用,并且具有非常丰富的功能。 **1.1 句点...
一、正则表达式基础 1. **基本元素**:正则表达式由一系列字符和特殊符号组成,如字母、数字、特殊字符以及元字符(如`.`、`*`、`+`、`?`、`^`、`$`、`|`、`()`、`[]`、`\`等)。 2. **量词**:`*`表示零个或多个...
1. **正则表达式基础** 在JS中,正则表达式是通过构造函数`RegExp`创建的,或者使用正则字面量`/pattern/flags`。它们用来定义模式,以匹配特定的字符串序列。例如,匹配所有数字的正则表达式是`/\d+/`。 2. **...
本资源“源码(精通正则表达式&实战正则表达式)”专注于JavaScript环境下的正则表达式学习,通过一系列视频教程和配套源码,帮助开发者提升对正则表达式的理解和应用能力。 首先,"精通正则表达式五部视频"可能涵盖...
这篇学习笔记将深入探讨JavaScript正则表达式的概念、语法和实际应用。 一、正则表达式基础 1. 创建正则表达式: - 字面量表示法:`/pattern/flags` - 构造函数:`new RegExp('pattern', 'flags')` 2. 常见的...
JavaScript正则表达式是编程语言JavaScript中的一个强大工具,用于处理文本字符串,包括搜索、替换、提取信息等操作。在JavaScript中,正则表达式是一种模式匹配语言,它允许我们用简洁的方式描述复杂的字符串模式。...
书中的例子涵盖了多种编程语言,如Perl、Java、JavaScript、.NET等,这些语言的正则表达式引擎虽然大同小异,但在细节上有所区别,学习者将了解到如何在不同环境下应用正则表达式。 对于初学者,书中会引导他们理解...
正则表达式基础 - **语法结构**:正则表达式是由一系列字符和特殊符号组成的模式串,用于匹配字符串中的特定模式。 - **常见符号**: - `.`:匹配任意单个字符。 - `*`:匹配前面的子表达式零次或多次。 - `+`...
1. 正则表达式基础 - **模式匹配**:正则表达式由一系列字符和特殊符号组成,用于定义一个模式,该模式可以匹配特定的字符串。 - **元字符**:如`*`, `+`, `?`, `{}`, `[]`, `\`等,它们具有特殊的含义,用于指定...
一、正则表达式基础 1. 字面量表示法与构造函数:在JavaScript中,有两种创建正则表达式的方式。一种是字面量表示法,即使用`/pattern/flags`,例如`/hello/`;另一种是构造函数表示法,`new RegExp('pattern', '...
这篇博客文章 "收集的一些js正则表达式" 提供了一些实用的JavaScript正则表达式示例,这将有助于开发者在实际项目中进行文本匹配、搜索、替换等操作。 首先,了解正则表达式的基础知识至关重要。正则表达式由一系列...
一、正则表达式基础 1. 元字符:正则表达式中包含一些特殊字符,如"."(匹配任意字符,除了换行符)、"*"(匹配前一个字符0次或无限次)、"+"(匹配前一个字符1次或无限次)、"?"(匹配前一个字符0次或1次)等,...
正则表达式在多种编程语言和工具中被广泛支持,包括Java、Perl、PHP、Python、JavaScript和JScript等。 在Java中,虽然标准API在某些版本中才正式引入正则表达式,但可以通过Apache的Jakarta-ORO库来提前使用相关...