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中用于处理字符串的强大工具之一。它可以帮助我们查找、替换或提取文本中的特定模式。在JavaScript中创建正则表达式有两种基本...
JavaScript中的正则表达式是处理字符串的强大工具,用于匹配、替换、分割文本。它们在编程中扮演着不可或缺的角色,尤其在验证用户输入、提取数据、格式化内容等方面。以下是对正则表达式的基础知识和常见用法的详细...
例如,`/hello regex/` 是一个简单的正则表达式,而 `new RegExp('模式', '修饰符')` 则是在 JavaScript 中创建正则表达式的方式。修饰符如 `i`(忽略大小写)、`g`(全局匹配)和 `m`(多行匹配)可以改变正则...
不同的编程语言和环境可能使用不同的正则表达式引擎,如Perl兼容正则表达式(PCRE)、JavaScript的正则表达式等,它们在语法细节和功能上可能存在差异。 七、实例应用 1. 邮箱验证:`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-...
这篇入门笔记实例将带你深入了解正则表达式的使用。 1. **正则表达式基础** - **模式定义**:正则表达式由特殊字符(元字符)和普通字符组成,用于描述文本模式。 - **创建方式**:可以使用`/pattern/flags`或`...
4. **学习正则的学习笔记**:可能包含一份详细的正则表达式学习资料,涵盖了基础概念如元字符、量词、字符类等,以及高级特性如分组、后向引用、预查等,方便用户系统学习。 5. **正则表达式参考手册**:可能提供了...
在这个“正则表达式”学习笔记中,我们将深入探讨这一强大的工具。 1. **基础概念** - **字符集**:包括普通字符(如 `a`、`b`)和特殊字符(如 `.`、`\d`),它们组合起来形成匹配模式。 - **量词**:如 `*` ...
在这个名为“Javascript正则表达式校验共7页.pdf.zip”的压缩包中,很可能是提供了一份详细的教程或笔记,涵盖了JavaScript正则表达式的基础到高级用法,共计7页内容。 正则表达式(Regular Expression)是由字符、...
在实践中,书中会讨论如何在各种编程语言中使用正则表达式,如JavaScript、Python、Java等,并给出具体的示例代码,帮助读者理解如何在实际开发中应用正则表达式。此外,书中还会讲解正则表达式引擎的工作原理,这...
正则表达式是一个深奥且强大的工具,学习和理解其原理和技巧对于处理文本数据至关重要。熟练掌握正则表达式可以大大提高编程效率和代码质量。通过不断练习和使用,你可以更好地理解和运用这些概念来解决各种文本处理...
php正则表达式学习笔记分享: 1.创建正则表达式 $regex = ‘/\d/i’; 与JavaScript中的第一个方式有点像,只是这里的话是个字符串。 2.正则表达式中的特殊字符 特殊字符有: . \ + * ? [ ^ ] $ ( ) { } = ! < ...
整理正则表达式的学习笔记有助于加深理解,提高记忆效果。可以将各种常见模式、特殊字符、语法结构和实例应用进行归纳,方便日后查阅和实践。通过分析和总结,可以逐步掌握正则表达式的精髓,提升在实际工作中解决...
学习和理解正则表达式,将有助于你在各种编程任务中更加游刃有余。为了深入理解和掌握,建议通过实际编写代码来实践各种正则表达式,同时结合各种在线测试工具进行检验和调试,这样可以更好地巩固所学知识。
### JavaScript 学习笔记知识点详解 #### 一、JavaScript 正则表达式 **1.1 定义与用途** 正则表达式是一种强大的文本处理工具,在JavaScript中主要用于字符串的操作,如查找、替换等。 **1.2 基本语法** 正则...
5. **保存与分享**:用户可以保存自己的正则表达式和匹配结果,方便日后复用或分享给他人,这对于团队协作或个人笔记非常有用。 6. **代码生成**:RegExr还能够自动生成对应编程语言的代码片段,例如JavaScript、...