正则表达式教程

合集下载

js正则表达式详细教程

js正则表达式详细教程

js正则表达式详细教程//校验是否全由数字组成[code] function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } [/code]//校验登录名:只能输⼊5-20个以字母开头、可带数字、“_”、“.”的字串[code] function isRegisterUserName(s) { var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/; if (!patrn.exec(s)) return false return true } [/code]//校验⽤户姓名:只能输⼊1-30个以字母开头的字串[code] function isTrueName(s) { var patrn=/^[a-zA-Z]{1,30}$/; if (!patrn.exec(s)) return false return true } }} //校验密码:只能输⼊6-20个字母、数字、下划线 [code] function isPasswd(s) { var patrn=/^(\w){6,20}$/; if (!patrn.exec(s)) return false return true } [/code]//校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”[code] function isTel(s) { //var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/; var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]) {1,12})+$/; if (!patrn.exec(s)) return false return true } [/code]//校验⼿机号码:必须以数字开头,除数字外,可含有“-”[code] function isMobil(s) { var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/; if (!patrn.exec(s)) return false return true } [/code]//校验邮政编码[code] function isPostalCode(s) { //var patrn=/^[a-zA-Z0-9]{3,12}$/; var patrn=/^[a-zA-Z0-9 ]{3,12}$/; if (!patrn.exec(s)) return false return true } [/code]//校验搜索关键字[code] function isSearch(s) { var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\] [\]\{\}:;'\,.<>?]{0,19}$/; if (!patrn.exec(s)) return false return true } function isIP(s) //by zergling { var patrn=/^[0-9.]{1,20}$/; if (!patrn.exec(s)) return false return true } [/code]正则表达式[code] "^\\d+$" //⾮负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$" //正整数 "^((-\\d+)|(0+))$" //⾮正整数(负整数 + 0) "^-[0-9]*[1-9][0-9]*$" //负整数 "^-?\\d+$" //整数 "^\\d+(\\.\\d+)?$" //⾮负浮点数(正浮点数 + 0) "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数 "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$" //⾮正浮点数(负浮点数 + 0) "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数 "^(-?\\d+) (\\.\\d+)?$" //浮点数 "^[A-Za-z]+$" //由26个英⽂字母组成的字符串 "^[A-Z]+$" //由26个英⽂字母的⼤写组成的字符串 "^[a-z]+$" //由26个英⽂字母的⼩写组成的字符串 "^[A-Za-z0-9]+$" //由数字和26个英⽂字母组成的字符串"^\\w+$" //由数字、26个英⽂字母或者下划线组成的字符串 "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$" //email地址"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$" //url "^[A-Za-z0-9_]*$" [/code]正则表达式使⽤详解简介简单的说,正则表达式是⼀种可以⽤于模式匹配和替换的强有⼒的⼯具。

正则表达式30分钟入门教程——堪称网上能找到的最好的正则式入门教程

正则表达式30分钟入门教程——堪称网上能找到的最好的正则式入门教程

正则表达式30分钟⼊门教程——堪称⽹上能找到的最好的正则式⼊门教程本教程堪称⽹上能找到的最好正则表达式⼊门教程本⽂⽬标30分钟内让你明⽩正则表达式是什么,并对它有⼀些基本的了解,让你可以在⾃⼰的程序或⽹页⾥使⽤它。

如何使⽤本教程最重要的是——请给我30分钟,如果你没有使⽤正则表达式的经验,请不要试图在30秒内⼊门——除⾮你是超⼈ :)别被下⾯那些复杂的表达式吓倒,只要跟着我⼀步⼀步来,你会发现正则表达式其实并没有想像中的那么困难。

当然,如果你看完了这篇教程之后,发现⾃⼰明⽩了很多,却⼜⼏乎什么都记不得,那也是很正常的——我认为,没接触过正则表达式的⼈在看完这篇教程后,能把提到过的语法记住80%以上的可能性为零。

这⾥只是让你明⽩基本的原理,以后你还需要多练习,多使⽤,才能熟练掌握正则表达式。

除了作为⼊门教程之外,本⽂还试图成为可以在⽇常⼯作中使⽤的正则表达式语法参考⼿册。

就作者本⼈的经历来说,这个⽬标还是完成得不错的——你看,我⾃⼰也没能把所有的东西记下来,不是吗?⽂本格式约定:专业术语元字符/语法格式正则表达式正则表达式中的⼀部分(⽤于分析) 对其进⾏匹配的源字符串对正则表达式或其中⼀部分的说明本⽂右边有⼀些注释,主要是⽤来提供⼀些相关信息,或者给没有程序员背景的读者解释⼀些基本概念,通常可以忽略。

正则表达式到底是什么东西?字符是计算机软件处理⽂字时最基本的单位,可能是字母,数字,标点符号,空格,换⾏符,汉字等等。

字符串是0个或更多个字符的序列。

⽂本也就是⽂字,字符串。

说某个字符串匹配某个正则表达式,通常是指这个字符串⾥有⼀部分(或⼏部分分别)能满⾜表达式给出的条件。

在编写处理字符串的程序或⽹页时,经常会有查找符合某些复杂规则的字符串的需要。

正则表达式就是⽤于描述这些规则的⼯具。

换句话说,正则表达式就是记录⽂本规则的代码。

很可能你使⽤过Windows/Dos下⽤于⽂件查找的通配符(wildcard),也就是*和?。

易语言正则表达式简明教程

易语言正则表达式简明教程

正则表达式(regular expression)前言正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。

只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。

索引1._引子2._正则表达式的历史3._正则表达式定义3.1_普通字符3.2_非打印字符3.3_特殊字符3.4_限定符3.5_定位符3.6_选择3.7_后向引用4._各种操作符的运算优先级5._全部符号解释6._部分例子7._正则表达式匹配规则7.1_基本模式匹配7.2_字符簇7.3_确定重复出现--------------------------------------------------------------------------------1. 引子目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP 等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。

正则表达式的使用,可以通过简单的办法来实现强大的功能。

为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的。

例子: ^.+@.+\\..+$这样的代码曾经多次把我自己给吓退过。

可能很多人也是被这样的代码给吓跑的吧。

继续阅读本文将让你也可以自由应用这样的代码。

注意:这里的第7部分跟前面的内容看起来似乎有些重复,目的是把前面表格里的部分重新描述了一次,目的是让这些内容更容易理解。

2. 正则表达式的历史正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。

Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。

1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。

正则表达式,匹配中文语句

正则表达式,匹配中文语句

正则表达式是一种用于匹配和操作文本模式的工具。

它使用特定的语法规则来定义搜索模式,以便在文本中查找符合这些规则的文本片段。

以下是一些常见的正则表达式语法和示例:
匹配单个字符:
匹配任意单个字符:.
匹配特定字符:例如,[abc] 将匹配字符a、b 或c。

匹配数字和字母:
匹配任意数字:\d
匹配任意字母或数字:\w
匹配任意字母:\p{L}
匹配重复字符或数字:
重复一次或多次:+
重复零次或多次:*
重复特定次数:例如,{3} 表示重复三次。

匹配特定模式:
匹配以特定字符开头的字符串:^abc 表示匹配以"abc" 开头的字符串。

匹配以特定字符结尾的字符串:abc$ 表示匹配以"abc" 结尾的字符串。

匹配包含特定字符的字符串:例如,[a-z]+ 表示匹配包含一个或多个小写字母的字符串。

转义特殊字符:
使用反斜杠() 来转义特殊字符,例如,\d 表示匹配实际的反斜杠字符而不是特殊含义。

下面是一些示例,演示如何使用正则表达式来匹配中文字符:
匹配单个中文字符:[\u4e00-\u9fa5]
匹配多个中文字符:[\u4e00-\u9fa5]+
匹配以中文字符开头的字符串:^[\u4e00-\u9fa5]
匹配以中文字符结尾的字符串:[\u4e00-\u9fa5]$
请注意,正则表达式的语法可能因语言和工具而异,上述示例适用于大多数常见的情况。

在使用正则表达式时,请务必参考相关文档或工具的语法规范以确保正确使用。

布尔正则表达式教程_概述说明以及解释

布尔正则表达式教程_概述说明以及解释

布尔正则表达式教程概述说明以及解释1. 引言1.1 概述布尔正则表达式是一种用于处理字符串模式匹配的强大工具。

它能够根据用户定义的规则,对输入的文本进行搜索、替换和验证操作。

不同于传统的正则表达式,布尔正则表达式具有更丰富的逻辑运算符和特殊字符,使得匹配过程更加灵活和精确。

1.2 布尔正则表达式简介布尔正则表达式是由布尔运算符、特殊字符和普通字符组成的字符串模式。

布尔运算符包括与(&&)、或(||)、非(!)等,用于实现多条件的逻辑判断。

特殊字符主要用于表示一些通用或特定格式的文本模式,如数字、字母、空格等。

普通字符则是指除了特殊字符外的其他文本内容。

1.3 目的本篇教程旨在帮助读者全面理解并掌握布尔正则表达式,并通过详细解释和示例说明来讲解其基础知识、使用方法以及高级应用技巧。

同时,我们还将探讨布尔正则表达式在实际场景中的应用,并给出相应的建议和展望。

以上是“1. 引言”部分的内容,它主要对布尔正则表达式进行了概述、简介以及阐明了本篇文章的目的。

2. 布尔正则表达式基础知识2.1 什么是布尔正则表达式布尔正则表达式,又称为布尔模式匹配,是一种用于字符串匹配和处理的工具。

它通过使用特定的语法规则来定义一个模式,并通过该模式来判断目标字符串是否与之匹配。

其中,"布尔"表示结果只有两种可能性:匹配或不匹配。

2.2 基本语法规则- 字符匹配:普通字符可以直接用于匹配相同的字符。

- 单个字符通配符:点号(`.`)表示可以匹配除换行符外的任何单个字符。

- 字符类:方括号(`[]`)内可列出多个字符,表示可以匹配其中任意一个字符。

- 字符范围:在字符类中可以使用连字符(`-`)指定范围,如`[a-z]` 表示小写字母。

- 反义字符类:在方括号内插入`^` 表示反义,即需要排除的字符集合。

- 重复次数控制:- `*` 表示前一个元素可以出现0次或更多次;- `+` 表示前一个元素可以出现1次或更多次;- `?` 表示前一个元素可以出现0次或1次;- `{m}` 表示前一个元素必须出现m次;- `{m,}` 表示前一个元素至少出现m次;- `{m,n}` 表示前一个元素至少出现m次,最多出现n次。

正则表达式两个或两个以上的空格

正则表达式两个或两个以上的空格

正则表达式:两个或两个以上的空格正则表达式是一种用于匹配、查找和替换文本的模式。

在文本处理中,经常会遇到需要匹配空格的情况,而正则表达式则能够很好地解决这个问题。

本文将从浅入深,以“两个或两个以上的空格”为主题,探讨正则表达式的相关知识,并共享个人观点和理解。

1. 什么是正则表达式?正则表达式是一种用于描述、匹配、查找甚至替换字符串的模式。

它由普通字符(例如字母、数字)和特殊字符(称为元字符)组成。

在正则表达式中,空格通常表示为空格字符或者使用特殊元字符来表示。

接下来,我们将深入探讨如何使用正则表达式来匹配“两个或两个以上的空格”。

2. 匹配两个空格在正则表达式中,想要匹配两个空格,可以使用如下的模式:\s{2}。

其中,\s表示空白字符(包括空格、制表符和换行符),{2}表示匹配前面的元素两次。

\s{2}表示匹配两个连续的空白字符。

3. 匹配两个以上的空格如果想要匹配两个以上的空格,可以使用如下的模式:\s{2,}。

其中,{2,}表示匹配前面的元素至少两次。

\s{2,}表示匹配至少两个连续的空白字符。

4. 应用举例举个简单的例子来说明上述的正则表达式如何应用于真实的文本匹配。

假设我们有一段文本:“Hello world”,那么正则表达式\s{2}将匹配到“Hello world”中的两个空格;而正则表达式\s{2,}将匹配到“Hello world”中的两个以上的空格。

5. 总结与回顾通过本文的介绍,我们了解了如何使用正则表达式来匹配“两个或两个以上的空格”。

正则表达式能够帮助我们很好地处理文本中的空格,提高文本处理的效率。

使用正则表达式也需要结合实际情况进行灵活运用,以达到最佳的匹配效果。

6. 个人观点与理解我个人认为,正则表达式是文本处理中非常有用的工具之一。

对于匹配空格这样的简单任务,正则表达式能够快速、准确地完成。

但是需要注意的是,正则表达式在复杂匹配时可能会变得复杂难懂,需要谨慎使用。

webstorm正则表达式用法教程

webstorm正则表达式用法教程

webstorm正则表达式用法教程WebStorm中的正则表达式(Regular Expression)是一种强大的文本处理工具,它使用特定的模式来匹配、查找、替换文本中的字符序列。

下面是一个WebStorm中使用正则表达式的简单教程:1.打开WebStorm并创建或打开一个项目:首先,启动WebStorm并打开你希望在其中使用正则表达式的项目。

2.打开查找/替换功能:在WebStorm中,你可以通过按Ctrl+F (在Mac上为Cmd+F)来打开“查找”对话框。

如果你想在找到的内容上进行替换,可以同时按Ctrl+R(在Mac上为Cmd+R)打开“替换”对话框。

3.启用正则表达式:在“查找”或“替换”对话框中,你会看到一个名为“正则表达式”(Regex)的复选框。

勾选这个复选框以启用正则表达式功能。

4.编写正则表达式:在“查找”或“替换”字段中,你可以开始编写你的正则表达式。

正则表达式由一系列特殊字符和模式组成,用于匹配文本中的特定模式。

例如,.匹配任何单个字符(除了换行符),*匹配前面的字符0次或多次,\d匹配任何数字等。

5.测试正则表达式:在编写正则表达式时,你可以通过点击“查找下一个”按钮来测试你的表达式是否按预期工作。

如果表达式匹配到文本,那么匹配的文本将会被高亮显示。

6.替换文本:如果你希望替换匹配到的文本,可以在“替换为”字段中输入你想要替换成的文本,然后点击“替换”或“替换全部”按钮。

7.关闭查找/替换对话框:完成查找和替换操作后,你可以点击对话框上的“关闭”按钮来关闭它。

请注意,正则表达式的语法和用法可能非常复杂,需要一些时间来学习和实践。

如果你对正则表达式的具体语法或用法有疑问,我建议你查阅相关的文档或教程,或者向有经验的开发者寻求帮助。

正则表达式菜鸟教程

正则表达式菜鸟教程

正则表达式菜鸟教程1.常见元字符
代码说明
.匹配换⾏符以外的任意字符
\w匹配字母或数字或下划线或汉字
\s匹配任意的空⽩符
**前⾯的内容可以
\d匹配数字可以连续重复使⽤任意次以使整个表达式得到匹配
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束
2.重复
代码\语法说明
*重复零次或更多次
+重复⼀次或更多次
重复零次或⼀次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次
3.转义字符\
4.字符类
⽅括号[]列出要匹配的字符,⽐如[aue],匹配其中的任何⼀个。

指定⼀个字符的范围,⽐如[1-9],[a-zA-Z]。

5.分枝条件
表⽰有⼏种规则,只要匹配其中的⼀个就可以。

⽤ | 将不同的规则分开。

6.分组
重复多个字符。

⽤()将其包起来叫做⼦表达式,就可以指定这个⼦表达式的重复次数了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

正则表达式学习要点:1.什么是正则表达式2.创建正则表达式3.获取控制4.常用的正则假设用户需要在HTML 表单中填写姓名、地址、出生日期等。

那么在将表单提交到服务器进一步处理前,JavaScript 程序会检查表单以确认用户确实输入了信息并且这些信息是符合要求的。

一.什么是正则表达式正则表达式(regular expression)是一个描述字符模式的对象。

ECMAScript 的RegExp 类表示正则表达式,而String 和RegExp 都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。

正则表达式主要用来验证客户端的输入数据。

用户填写完表单单击按钮之后,表单就会被发送到服务器,在服务器端通常会用PHP、 等服务器脚本对其进行进一步处理。

因为客户端验证,可以节约大量的服务器端的系统资源,并且提供更好的用户体验。

二.创建正则表达式创建正则表达式和创建字符串类似,创建正则表达式提供了两种方法,一种是采用new运算符,另一个是采用字面量方式。

1.两种创建方式var box = new RegExp('box'); //第一个参数字符串var box = new RegExp('box', 'ig'); //第二个参数可选模式修饰符模式修饰符的可选参数参数含义i 忽略大小写g 全局匹配m 多行匹配var box = /box/; //直接用两个反斜杠var box = /box/ig; //在第二个斜杠后面加上模式修饰符2.测试正则表达式RegExp 对象包含两个方法:test()和exec(),功能基本相似,用于测试字符串匹配。

test()方法在字符串中查找是否存在指定的正则表达式并返回布尔值,如果存在则返回true,不存在则返回false。

exec()方法也用于在字符串中查找指定正则表达式,如果exec()方法执行成功,则返回包含该查找字符串的相关信息数组。

如果执行失败,则返回null。

RegExp 对象的方法方法功能test 在字符串中测试模式匹配,返回true 或falseexec 在字符串中执行匹配搜索,返回结果数组/*使用new 运算符的test 方法示例*/var pattern = new RegExp('box', 'i'); //创建正则模式,不区分大小写var str = 'This is a Box!'; //创建要比对的字符串alert(pattern.test(str)); //通过test()方法验证是否匹配/*使用字面量方式的test 方法示例*/var pattern = /box/i; //创建正则模式,不区分大小写var str = 'This is a Box!';alert(pattern.test(str));/*使用一条语句实现正则匹配*/alert(/box/i.test('This is a Box!')); //模式和字符串替换掉了两个变量/*使用exec 返回匹配数组*/var pattern = /box/i;var str = 'This is a Box!';alert(pattern.exec(str)); //匹配了返回数组,否则返回nullPS:exec 方法还有其他具体应用,我们在获取控制学完后再看。

3.使用字符串的正则表达式方法除了test()和exec()方法,String 对象也提供了4 个使用正则表达式的方法。

String 对象中的正则表达式方法方法含义match(pattern) 返回pattern 中的子串或nullreplace(pattern, replacement) 用replacement 替换patternsearch(pattern) 返回字符串中pattern 开始位置split(pattern) 返回字符串按指定pattern 拆分的数组/*使用match 方法获取获取匹配数组*/var pattern = /box/ig; //全局搜索var str = 'This is a Box!,That is a Box too';alert(str.match(pattern)); //匹配到两个Box,Boxalert(str.match(pattern).length); //获取数组的长度/*使用search 来查找匹配数据*/var pattern = /box/ig;var str = 'This is a Box!,That is a Box too';alert(str.search(pattern)); //查找到返回位置,否则返回-1PS:因为search 方法查找到即返回,也就是说无需g 全局/*使用replace 替换匹配到的数据*/var pattern = /box/ig;var str = 'This is a Box!,That is a Box too';alert(str.replace(pattern, 'Tom')); //将Box 替换成了Tom/*使用split 拆分成字符串数组*/var pattern = / /ig;var str = 'This is a Box!,That is a Box too';alert(str.split(pattern)); //将空格拆开分组成数组RegExp对象的静态属性属性短名含义input $_ 当前被匹配的字符串lastMatch $& 最后一个匹配字符串lastParen $+ 最后一对圆括号内的匹配子串leftContext $` 最后一次匹配前的子串multiline $* 用于指定是否所有的表达式都用于多行的布尔值rightContext $' 在上次匹配之后的子串/*使用静态属性*/var pattern = /(g)oogle/;var str = 'This is google!';pattern.test(str); //执行一下alert(RegExp.input); //This is google!alert(RegExp.leftContext); //This isalert(RegExp.rightContext); //!alert(stMatch); //googlealert(stParen); //galert(RegExp.multiline); //falsePS:Opera 不支持input、lastMatch、lastParen 和multiline 属性。

IE 不支持multiline 属性。

所有的属性可以使用短名来操作RegExp.input 可以改写成RegExp['$_'],依次类推。

但RegExp.input 比较特殊,它还可以写成RegExp.$_。

RegExp对象的实例属性属性含义global Boolean 值,表示g 是否已设置ignoreCase Boolean 值,表示i 是否已设置lastIndex 整数,代表下次匹配将从哪里字符位置开始multiline Boolean 值,表示m 是否已设置Source 正则表达式的源字符串形式/*使用实例属性*/var pattern = /google/ig;alert(pattern.global); //true,是否全局了alert(pattern.ignoreCase); //true,是否忽略大小写alert(pattern.multiline); //false,是否支持换行alert(stIndex); //0,下次的匹配位置alert(pattern.source); //google,正则表达式的源字符串var pattern = /google/g;var str = 'google google google';pattern.test(str); //google,匹配第一次alert(stIndex); //6,第二次匹配的位PS:以上基本没什么用。

并且lastIndex 在获取下次匹配位置上IE 和其他浏览器有偏差,主要表现在非全局匹配上。

lastIndex 还支持手动设置,直接赋值操作。

三.获取控制正则表达式元字符是包含特殊含义的字符。

它们有一些特殊功能,可以控制匹配模式的方式。

反斜杠后的元字符将失去其特殊含义。

字符类:单个字符和数字元字符/元符号匹配情况. 匹配除换行符外的任意字符[a-z0-9] 匹配括号中的字符集中的任意字符[^a-z0-9] 匹配任意不在括号中的字符集中的字符\d 匹配数字\D 匹配非数字,同[^0-9]相同\w 匹配字母和数字及_\W 匹配非字母和数字及_字符类:空白字符元字符/元符号匹配情况\0 匹配null 字符\b 匹配空格字符\f 匹配进纸字符\n 匹配换行符\r 匹配回车字符\t 匹配制表符\s 匹配空白字符、空格、制表符和换行符\S 匹配非空白字符字符类:锚字符元字符/元符号匹配情况^ 行首匹配$ 行尾匹配\A 只有匹配字符串开始处\b 匹配单词边界,词在[]内时无效\B 匹配非单词边界\G 匹配当前搜索的开始位置\Z 匹配字符串结束处或行尾\z 只匹配字符串结束处字符类:重复字符元字符/元符号匹配情况x? 匹配0 个或1 个xx* 匹配0 个或任意多个xx+ 匹配至少一个x(xyz)+ 匹配至少一个(xyz)x{m,n} 匹配最少m 个、最多n 个x字符类:替代字符元字符/元符号匹配情况this|where|logo 匹配this 或where 或logo 中任意一个字符类:记录字符元字符/元符号匹配情况(string) 用于反向引用的分组\1 或$1 匹配第一个分组中的内容\2 或$2 匹配第二个分组中的内容\3 或$3 匹配第三个分组中的内容/*使用点元字符*/var pattern = /g..gle/; //.匹配一个任意字符var str = 'google';alert(pattern.test(str));/*重复匹配*/var pattern = /g.*gle/; //.匹配0 个一个或多个var str = 'google'; //*,?,+,{n,m}alert(pattern.test(str));/*使用字符类匹配*/var pattern = /g[a-zA-Z_]*gle/; //[a-z]*表示任意个a-z 中的字符var str = 'google';alert(pattern.test(str));var pattern = /g[^0-9]*gle/; //[^0-9]*表示任意个非0-9 的字符var str = 'google';alert(pattern.test(str));var pattern = /[a-z][A-Z]+/; //[A-Z]+表示A-Z 一次或多次var str = 'gOOGLE';alert(pattern.test(str));/*使用元符号匹配*/var pattern = /g\w*gle/; //\w*匹配任意多个所有字母数字_ var str = 'google';alert(pattern.test(str));var pattern = /google\d*/; //\d*匹配任意多个数字var str = 'google444';alert(pattern.test(str));var pattern = /\D{7,}/; //\D{7,}匹配至少7 个非数字var str = 'google8';alert(pattern.test(str));/*使用锚元字符匹配*/var pattern = /^google$/; //^从开头匹配,$从结尾开始匹配var str = 'google';alert(pattern.test(str));var pattern = /goo\sgle/; //\s 可以匹配到空格var str = 'goo gle';alert(pattern.test(str));var pattern = /google\b/; //\b 可以匹配是否到了边界var str = 'google';alert(pattern.test(str));/*使用或模式匹配*/var pattern = /google|baidu|bing/; //匹配三种其中一种字符串var str = 'google';alert(pattern.test(str));/*使用分组模式匹配*/var pattern = /(google){4,8}/; //匹配分组里的字符串4-8 次var str = 'googlegoogle';alert(pattern.test(str));var pattern = /8(.*)8/; //获取8..8 之间的任意字符var str = 'This is 8google8';str.match(pattern);alert(RegExp.$1); //得到第一个分组里的字符串内容var pattern = /8(.*)8/;var str = 'This is 8google8';var result = str.replace(pattern,'<strong>$1</strong>'); //得到替换的字符串输出document.write(result);var pattern = /(.*)\s(.*)/;var str = 'google baidu';var result = str.replace(pattern, '$2 $1'); //将两个分组的值替换输出document.write(result);贪婪惰性+ +?? ??* *?{n} {n}?{n,} {n,}?{n,m} {n,m}?/*关于贪婪和惰性*/var pattern = /[a-z]+?/; //?号关闭了贪婪匹配,只替换了第一个var str = 'abcdefjhijklmnopqrstuvwxyz';var result = str.replace(pattern, 'xxx');alert(result);var pattern = /8(.+?)8/g; //禁止了贪婪,开启的全局var str = 'This is 8google8, That is 8google8, There is 8google8'; var result = str.replace(pattern,'<strong>$1</strong>'); document.write(result);var pattern = /8([^8]*)8/g; //另一种禁止贪婪var str = 'This is 8google8, That is 8google8, There is 8google8'; var result = str.replace(pattern,'<strong>$1</strong>'); document.write(result);/*使用exec 返回数组*/var pattern = /^[a-z]+\s[0-9]{4}$/i;var str = 'google 2012';alert(pattern.exec(str)); //返回整个字符串var pattern = /^[a-z]+/i; //只匹配字母var str = 'google 2012';alert(pattern.exec(str)); //返回googlevar pattern = /^([a-z]+)\s([0-9]{4})$/i; //使用分组var str = 'google 2012';alert(pattern.exec(str)[0]); //google 2012alert(pattern.exec(str)[1]); //googlealert(pattern.exec(str)[2]); //2012/*捕获性分组和非捕获性分组*/var pattern = /(\d+)([a-z])/; //捕获性分组var str = '123abc';alert(pattern.exec(str));var pattern = /(\d+)(?:[a-z])/; //非捕获性分组var str = '123abc';alert(pattern.exec(str));/*使用分组嵌套*/var pattern = /(A?(B?(C?)))/; //从外往内获取var str = 'ABC';alert(pattern.exec(str));/*使用前瞻捕获*/var pattern = /(goo(?=gle))/; //goo 后面必须跟着gle 才能捕获var str = 'google';alert(pattern.exec(str));/*使用特殊字符匹配*/var pattern = /\.\[\/b\]/; //特殊字符,用\符号转义即可var str = '.[/b]';alert(pattern.test(str));/*使用换行模式*/var pattern = /^\d+/mg; //启用了换行模式var str = '1.baidu\n2.google\n3.bing';var result = str.replace(pattern, '#');alert(result);四.常用的正则1.检查邮政编码var pattern = /[1-9][0-9]{5}/; //共6 位数字,第一位不能为0 var str = '224000';alert(pattern.test(str));2.检查文件压缩包var pattern = /[\w]+\.zip|rar|gz/; //\d\w_表示所有数字和字母加下划线var str = '123.zip'; //\.表示匹配.,后面是一个选择alert(pattern.test(str));3.删除多余空格var pattern = /\s/g; //g 必须全局,才能全部匹配var str = '111 222 333';var result = str.replace(pattern,''); //把空格匹配成无空格alert(result);4.删除首尾空格var pattern = /^\s+/; //强制首var str = ' goo gle ';var result = str.replace(pattern, '');pattern = /\s+$/; //强制尾result = result.replace(pattern, '');alert('|' + result + '|');var pattern = /^\s*(.+?)\s*$/; //使用了非贪婪捕获var str = ' google ';alert('|' + pattern.exec(str)[1] + '|');var pattern = /^\s*(.+?)\s*$/;var str = ' google ';alert('|' + str.replace(pattern, '$1') + '|'); //使用了分组获取5.简单的电子邮件验证var pattern = /^([a-zA-Z0-9_\.\-]+)@([a-zA-Z0-9_\.\-]+)\.([a-zA-Z]{2,4})$/;var str = '@';alert(pattern.test(str));var pattern = /^([\w\.\-]+)@([\w\.\-]+)\.([\w]{2,4})$/;var str = '@';alert(pattern.test(str));。

相关文档
最新文档