1、正则表达式中一些特殊字符的含义
. 任意一个字符,包括汉字(不包括换行)
var reg = /.at/g;
var text = "你at,bat,cat,ddat";
println(text.match(reg));//你at,bat,cat,dat
\w 任意一个字母、数字、下划线
var reg = /\wat/g;
var text = "你at,bat,cat,ddat";
println(text.match(reg));//bat,cat,dat
\d 任意一下数字
var reg = /\dat/g;
var text = "0at,bat,cat,3at";
println(text.match(reg));//0at,3at
\s 匹配空白字符
\W(大写) 除了字母、数字、下划线之外的任意字符,包括汉字
var reg = /\Wat/g;
var text = "&&at,你at,!!at,¥at,cat";
println(text.match(reg));//&at,你at,!at,¥at
\D(大写) 除了数字任意字符,包括汉字
var reg = /\Dat/g;
var text = "你at,0at,cat";
println(text.match(reg));//你at,cat
\uxxxx 匹配Unicode字符
var reg = /\u90b1at/g; //\u90b1-->邱
var text = "邱at,他at,0at,cat";
println(text.match(reg));//邱at
[] 括号内的任意字符
[^] 除了括号内的任意字符
[\u4e00-\u9fa5] 匹配汉字
var reg = /[\u4e00-\u9fa5]/g;
var text = "邱at,他at,0at,cat";
println(text.match(reg));//邱,他
[^\x00-\xff] 匹配双字节字符(也就是除了ascii码以外的字符)
var reg = /[^\x00-\xff]/g;
var text = "邱at,他at,0at,cat,¥……";
println(text.match(reg));//邱,他,,,¥,…,…
{n,m} 至少n次,最多m次(包括n,m在内)
{n,} 至少n次
{n} 恰好n次
* 0次或多次
+ 至少一次
? 0次或者1次 (也就是说此项可选)
var reg = /a*/g;
var text = "bbbb";
println(reg.test(text));//true 因为bbbb含有0个a
| 或
() 组合,后面可以跟*,+,?,|等符号(将括号内的部分看成一个整体)
var reg = /ab|cd/g;
var text = "ab,cd,dd";
println(text.match(reg));//ab,cd
var reg = /java(script)?/g;
var text = "javascript,java,#c";
println(text.match(reg));javascript,java
^ 从第一个字符开始匹配
$ 从最后一个字符开始匹配
\b 匹配单词边界
\B 不是单词边界
(?=exp)
(?!exp)
var reg = /java(?=S)/;//只能当java后面的字母为S时,才匹配前面的表达式
var text1 = "javaScript";
var text2 = "javaCoffee";
println(text1.match(reg));//java 注意返回的匹配字符中不包含S
println(text2.match(reg));//null
var reg = /java(?!Script)/;//只能当java后面不是Script时,才匹配前面的表达式
var text1 = "javaScript";
var text2 = "javaCoffee";
println(text1.match(reg));//null
println(text2.match(reg));//java
trim方法的实现
function trim(str){
return str.replace(/^\s+|\s+$/g,'');
}
//即匹配某个单词
var reg = /\b[Jj]ava\b/g;
var text = "javascript Java Javascript java";
println(text.match(reg));//Java,java
var reg = /\B[Ss]cript/;
println(reg.test("Script")); //false
println(reg.test("JavaScript")); //true
println(reg.test(" Script")); //false
println(reg.test("Scripting")); //false
2、String支持RegExp的方法
如果RegExp分组中包含分组(即用括号括起来的表达式),如下面的的例子
那么数组中的第一个元素matches[0]是匹配的表达式,
余下的元素是分组中的子表达式对应的匹配元素,matches[1]是第一个括号表达式 对应的匹配项,
对于这些匹配,我们也可以通过RegExp.$1变量来得到,等价于matches[1],两者是对应的;
var url = /(\w+):\/\/(.+)\/(.+)/;
var text = "http://www.baidu.com/index.html";
var matches = text.match(url);
println(matches[0]);//http://www.baidu.com/index.html
println(matches[1]);//http
println(matches[2]);//www.baidu.com
println(matches[3]);//index.html
在replace方法中,$1也可以这样用
var quote = /'(.*?)'/g;
var text = "'te''xt'";//'te''xt'
println(text.replace(quote,'($1)'));//(te)(xt) 将''替换为()
\m模式匹配
一下代码中的正则表达式想要匹配行末的一个单词.它只会匹配最后的Sixth,
但实际上这个字符串包含两个换行符,因此, Second, Fourth也应该匹配出来
因此引入了多行模式,这会让$边界匹配换行符(\n) 和字符串真正的结尾
var text = "First Second\nThird Fourth\nFifth Sixth";
var reg = /(\w+)$/g;
println(text.match(reg));//Sixth
var text = "First Second\nThird Fourth\nFifth Sixth";
var reg = /(\w+)$/gm;
println(text.match(reg));//Second,Fourth,Sixth
贪婪匹配与惰性匹配
贪婪 先看整个字符串是否匹配,如果没有发现匹配,它去掉该字符串中最后一个字符,并再次尝试.重复这个过程直到发现匹配 或者字符串不剩任何字符.
惰性 先看字符串中第一个字符是否匹配.如果单独这个字符还不够,就读入下一个字符,组成两个字符的字符串.
如果还是没有发现匹配,惰性量词继续从字符串中添加字符直到发现匹配或者整个字符串都检查过也没有匹配.
贪婪 惰性 描述
? ?? 零次或一次出现
* *? 零次或多次出现
+ +? 一次或多次出现
{n} {n}? 恰好n次出现
{n,m} {n,m}? 至少n次之多m次出现
{n,} {n,}? 至少n次出现
贪婪匹配,匹配尽量多的字符
var reg = /\(.*\)/g;
var text = "(html)(html)";
println(text.match(reg));//(html)(html)
惰性,匹配尽量小的字符
var reg = /\(.*?\)/;
var text = "(html)(html)";
println(text.match(reg));//(html)
将双引号替换为''
var name = '"a", "b"';
println(name.replace(/"([^"]*)"/g, "'$1'")); //'a','b';
PS:附件中的内容为本文的txt文件
分享到:
相关推荐
JavaScript正则表达式学习资料笔记 很适合初学者,讲的非常详细、全面。
javascript正则表达式入门学习实例入门
北风网正则表达式详细讲解学习笔记,讲解的比较基础适合初学者学习。
php正则表达式学习笔记分享: 1.创建正则表达式 $regex = ‘/\d/i’; 与JavaScript中的第一个方式有点像,只是这里的话是个字符串。 2.正则表达式中的特殊字符 特殊字符有: . \ + * ? [ ^ ] $ ( ) { } = ! < ...
JavaScript学习笔记包括正则表达式、异常处理、调试、关键字等
正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)。模式描述在搜索文本时要匹配的一个或多个字符串。 首先推荐几个正则表达式编辑器 Debuggex :...
正则表达式在web开发中会经常用到,主要用于验证用户输入的数据的格式。
在上篇文章给大家介绍了javascript正则表达式和字符串RegExp and String(一),本文给大家继续分享相关内容。 前言 我认为,在学习一门编程语言的过程中,字符串、数组、容器是非常重要的部分,为了提高编程效率,...
主要介绍了JavaScript正则表达式迷你书之贪婪模式-学习笔记,需要的朋友可以参考下
1、创建正则表达式 第一种方式:注意这里的正则表达式不能使用单引号或者双引号,如下 var pattern1 = /[abc]/i; // 匹配第一个”a”或”b”或”c”,不区分大小写 第二种方式:使用RegExp构造函数创建,该构造函数...
一、创建正则表达式 创建正则表达式和创建字符串类似 , 创建正则表达式提供了两种方法 , 一种是采用 new运算符,另一个是采用字面量方式。 代码如下: var dog = new RegExp(‘dog’); // 第一个参数字符串 var dog...
HTML笔记. J2EE笔记. Javascript笔记. JAVA笔记.oracle 笔记.Linux笔记.tomcat笔记.面试问题.数据结构.听韩顺平的笔记.正则表达式.等,我是我在上大学时学习做的笔记,拿出来和大家共享。。
一、正则表达式 二、需要进行转义字符的元字符有 三、优先级 四、举例 ·replace(/^/mg,"#") 可在每行首添加一个“#” ·/^\s*$/ 匹配空行 ·/\b([a-zA-Z]+) \1\b/ 匹配两个相邻的相同单词 ·html标签匹配:/...
RegExp类 RegExp对象的构造函数可以带一个或两个参数 第一个参数是描述需要进行匹配的模式字符串,如果还有第二个参数,这个参数则制定了额外的处理指令。
需要指出的是,这里只是总结了正则表达式的常用的且比较简单的语法,而不是全部语法,在我看来,掌握了这些常用语法,已经足够应对日常应用了。正则表达式不只是应用在ECMAScript中,在JAVA、.Net、Unix等也有相应...
. 匹配除换行符的任意字符 \w 匹配字母,数字,下划线,汉字 \s 匹配任意空白符 \d ... [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] ... 您可能感兴趣的文章:Java/Js下使用正则表达式匹配嵌套Html标签js 正则表达式