Javascript正则表达式笔记
一、字符类
将单独的直接字符放进[]内,就组成了字符类。一个字符类和它所包含的任何字符都匹配。
例如:/[abc]/ 与abc三个字母的任意一个匹配。 
同时,还可以定义否定字符类。利用^字符。例如:/[^abc]/匹配a b c以外的所有字符。 
另,可以用连字符号确定一个字符的范围。例如:/[a-z]/匹配a到z。要匹配所有拉丁字母集,可以使用/[a-zA-Z0-9]/
字符 匹配
. 除换行符和其他Unicode行终止符之外的任意字符
\w 任何ASCII单字字符,等价于[a-zA-Z0-9_]
\W 任何非ASCII单字字符,等价于[^a-zA-Z0-9_]
\s 任何Unicode空白符
\S 任何非Unicode空白符
\d 任何ASCII数字,等价于[0-9]
\D 任何非ASCII数字,等价于[^0-9]
[\b] 退格直接量
注意,方括号[]内页可以使用上面的转义序列,例如/[\s\d]/匹配任意的空白符或数字
二、重复
根据第二节涉及到的知识,我们可以把两位数表述成/\d\d/,但,如果重复次数过多,肯定就不能这样写了。
字符 匹配
{n,m} 匹配前一项至少n次,但不超过m次
{n,} 匹配前一项大于等于n次
{n} 恰好n次
? 0次或1次
+ 1次或者多次,等价于{1,}
* 0次或多次
^ 匹配的字符开头
$ 字符串结尾
@ 匹配字符串中必须出现的字符
例如:/\d{2,4}/ 2个、3个或4个数字。   /\w{3}\d?/ 匹配3个字符,并有一个可选的数字。 
           0000000注意:/a*/实际上与bbbb是匹配的,因为0个或多个a与bbbb匹配。
三、选择、分组和引用
1、字符“|”用于分隔选择的字符,例如:/ab|cd|ef/匹配字符串ab或cd或ef。/\d{3}|[a-z]{4}/匹配3个数字或4个小写字母
2、“()”作用是把单独的项目组合成子表达式。例如:/java(script)?/匹配java,其后可以有script,也可以没有
四、匹配特定字符串:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
五、匹配账号是否合法(字母开头,允许5-16个字节,允许字母数字下划线);
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
正则表达式语法
| 表达式 | 匹配 | 
|---|---|
| 
 /^\s*$/  | 
 匹配空行。  | 
| 
 /\d{2}-\d{5}/  | 
 验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。  | 
| 
 /<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/  | 
 匹配 HTML 标记。  | 
下表包含了元字符的完整列表以及它们在正则表达式上下文中的行为:
| 字符 | 说明 | 
|---|---|
| 
 \  | 
 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“\n”匹配换行符。序列“\\”匹配“\”,“\(”匹配“(”。  | 
| 
 ^  | 
 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与“\n”或“\r”之后的位置匹配。  | 
| 
 $  | 
 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与“\n”或“\r”之前的位置匹配。  | 
| 
 *  | 
 零次或多次匹配前面的字符或子表达式。例如,zo* 匹配“z”和“zoo”。* 等效于 {0,}。  | 
| 
 +  | 
 一次或多次匹配前面的字符或子表达式。例如,“zo+”与“zo”和“zoo”匹配,但与“z”不匹配。+ 等效于 {1,}。  | 
| 
 ?  | 
 零次或一次匹配前面的字符或子表达式。例如,“do(es)?”匹配“do”或“does”中的“do”。? 等效于 {0,1}。  | 
| 
 {n}  | 
 n 是非负整数。正好匹配 n 次。例如,“o{2}”与“Bob”中的“o”不匹配,但与“food”中的两个“o”匹配。  | 
| 
 {n,}  | 
 n 是非负整数。至少匹配 n 次。例如,“o{2,}”不匹配“Bob”中的“o”,而匹配“foooood”中的所有 o。“o{1,}”等效于“o+”。“o{0,}”等效于“o*”。  | 
| 
 {n,m}  | 
 M 和 n 是非负整数,其中 n <= m。匹配至少 n 次,至多 m 次。例如,“o{1,3}”匹配“fooooood”中的头三个 o。'o{0,1}' 等效于 'o?'。注意:您不能将空格插入逗号和数字之间。  | 
| 
 ?  | 
 当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心的”。“非贪心的”模式匹配搜索到的、尽可能短的字符串,而默认的“贪心的”模式匹配搜索到的、尽可能长的字符串。例如,在字符串“oooo”中,“o+?”只匹配单个“o”,而“o+”匹配所有“o”。  | 
| 
 .  | 
 匹配除“\n”之外的任何单个字符。若要匹配包括“\n”在内的任意字符,请使用诸如“[\s\S]”之类的模式。  | 
| 
 (pattern)  | 
 匹配 pattern 并捕获该匹配的子表达式。可以使用 $0…$9 属性从结果“匹配”集合中检索捕获的匹配。若要匹配括号字符 ( ),请使用“\(”或者“\)”。  | 
| 
 (?:pattern)  | 
 匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用“or”字符 (|) 组合模式部件的情况很有用。例如,'industr(?:y|ies) 是比 'industry|industries' 更经济的表达式。  | 
| 
 (?=pattern)  | 
 执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 pattern 的字符串的起始点的字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,'Windows (?=95|98|NT|2000)' 匹配“Windows 2000”中的“Windows”,但不匹配“Windows 3.1”中的“Windows”。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。  | 
| 
 (?!pattern)  | 
 执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,'Windows (?!95|98|NT|2000)' 匹配“Windows 3.1”中的 “Windows”,但不匹配“Windows 2000”中的“Windows”。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。  | 
| 
 x|y  | 
 匹配 x 或 y。例如,'z|food' 匹配“z”或“food”。'(z|f)ood' 匹配“zood”或“food”。  | 
| 
 [xyz]  | 
 字符集。匹配包含的任一字符。例如,“[abc]”匹配“plain”中的“a”。  | 
| 
 [^xyz]  | 
 反向字符集。匹配未包含的任何字符。例如,“[^abc]”匹配“plain”中的“p”。  | 
| 
 [a-z]  | 
 字符范围。匹配指定范围内的任何字符。例如,“[a-z]”匹配“a”到“z”范围内的任何小写字母。  | 
| 
 [^a-z]  | 
 反向范围字符。匹配不在指定的范围内的任何字符。例如,“[^a-z]”匹配任何不在“a”到“z”范围内的任何字符。  | 
| 
 \b  | 
 匹配一个字边界,即字与空格间的位置。例如,“er\b”匹配“never”中的“er”,但不匹配“verb”中的“er”。  | 
| 
 \B  | 
 非字边界匹配。“er\B”匹配“verb”中的“er”,但不匹配“never”中的“er”。  | 
| 
 \cx  | 
 匹配 x 指示的控制字符。例如,\cM 匹配 Control-M 或回车符。x 的值必须在 A-Z 或 a-z 之间。如果不是这样,则假定 c 就是“c”字符本身。  | 
| 
 \d  | 
 数字字符匹配。等效于 [0-9]。  | 
| 
 \D  | 
 非数字字符匹配。等效于 [^0-9]。  | 
| 
 \f  | 
 换页符匹配。等效于 \x0c 和 \cL。  | 
| 
 \n  | 
 换行符匹配。等效于 \x0a 和 \cJ。  | 
| 
 \r  | 
 匹配一个回车符。等效于 \x0d 和 \cM。  | 
| 
 \s  | 
 匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。  | 
| 
 \S  | 
 匹配任何非空白字符。与 [^ \f\n\r\t\v] 等效。  | 
| 
 \t  | 
 制表符匹配。与 \x09 和 \cI 等效。  | 
| 
 \v  | 
 垂直制表符匹配。与 \x0b 和 \cK 等效。  | 
| 
 \w  | 
 匹配任何字类字符,包括下划线。与“[A-Za-z0-9_]”等效。  | 
| 
 \W  | 
 与任何非单词字符匹配。与“[^A-Za-z0-9_]”等效。  | 
| 
 \xn  | 
 匹配 n,此处的 n 是一个十六进制转义码。十六进制转义码必须正好是两位数长。例如,“\x41”匹配“A”。“\x041”与“\x04”&“1”等效。允许在正则表达式中使用 ASCII 代码。  | 
| 
 \num  | 
 匹配 num,此处的 num 是一个正整数。到捕获匹配的反向引用。例如,“(.)\1”匹配两个连续的相同字符。  | 
| 
 \n  | 
 标识一个八进制转义码或反向引用。如果 \n 前面至少有 n 个捕获子表达式,那么 n 是反向引用。否则,如果 n 是八进制数 (0-7),那么 n 是八进制转义码。  | 
| 
 \nm  | 
 标识一个八进制转义码或反向引用。如果 \nm 前面至少有 nm 个捕获子表达式,那么 nm 是反向引用。如果 \nm 前面至少有 n 个捕获,则 n 是反向引用,后面跟有字符 m。如果两种前面的情况都不存在,则 \nm 匹配八进制值 nm,其中 n 和 m 是八进制数字 (0-7)。  | 
| 
 \nml  | 
 当 n 是八进制数 (0-3),m 和 l 是八进制数 (0-7) 时,匹配八进制转义码 nml。  | 
| 
 \un  | 
 匹配 n,其中 n 是以四位十六进制数表示的 Unicode 字符。例如,\u00A9 匹配版权符号 (©)。  | 
文章来自:https://msdn.microsoft.com/zh-cn/library/ae5bf541(v=vs.80).aspx
http://www.cnblogs.com/light169/archive/2006/10/18/532347.html 精讲正则表达
http://czm21.blog.163.com/blog/static/834071200811445348937/ 正则表达式元字符的完整列表
Javascript正则表达式笔记的更多相关文章
- Javascript 正则表达式笔记2
		
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
 - Javascript 正则表达式笔记
		
\d 元字符 + 量词 \w 常用的字符a-zA-Z0-9 .除回车之外的字符 ?0-1个字符 量词 只有前面是元字符,才变现量词 * 0-n 量词 /^\d+$/ 以字符开头,义字符结尾 [0-9] ...
 - 慕课笔记-JavaScript正则表达式
		
目录 慕课笔记-JavaScript正则表达式笔记 概述 RegExp对象 修饰符 元字符 字符类 范围类 预定义类 预定义字符 边界 量词 贪婪模式 分组 或(使用竖线表示) 反向引用 忽略分组 前 ...
 - JavaScript正则表达式学习笔记(二) - 打怪升级
		
本文接上篇,基础部分相对薄弱的同学请移步<JavaScript正则表达式学习笔记(一) - 理论基础>.上文介绍了8种JavaScript正则表达式的属性,本文还会追加介绍几种JavaSc ...
 - javascript正则表达式 - 学习笔记
		
JavaScript 正则表达式 学习笔记 标签(空格分隔): 基础 JavaScript 正则表达式是用于匹配字符串中字符组合的模式.在javascript中,正则表达式也是对象.这些模式被用于Re ...
 - web前端学习(四)JavaScript学习笔记部分(10)-- JavaScript正则表达式
		
1.JavaScript正则表达式课程概要 方便查找字符串.数字.特殊字串等等 2.正则表达式的介绍 RegExp是正则表达式的缩写 当检索某个文本时,可以使用一种模式来描述要检索的内容.RegExp ...
 - JavaScript基础笔记一
		
一.真假判断 真的:true.非零数字.非空字符串.非空对象 假的:false.数字零.空字符串.空对象.undefined 例: if(0){ alert(1) }else{ alert(2) } ...
 - JavaScript 重点笔记
		
JavaScript 重点笔记 ## 数组 // 必须掌握 - arr.length:获取数组元素的长度 - arr.splice(起始位置,长度):从数组中添加或删除元素. - arr.indexO ...
 - javascript学习笔记(四) Number 数字类型
		
数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数 toExponential() 方法 用科学 ...
 
随机推荐
- centos每天一句命令
			
shutdown -h now 立刻关机 后面可以加上关键的时间 -r 重启 reboot 重启 同时记载以下,仅仅给刚刚接触的新手来说的 按两次tab 键会自动命令 cd 到目录下 su r ...
 - javascript 判断浏览器的ie版本,替换html标签
			
/* var browser=navigator.appName var b_version=navigator.appVersion var version=b_version.split(&quo ...
 - 封装mysql类
			
类: <?phpheader("content-type:text/html;charset=utf-8");//封装一个类/*掌握满足单例模式的必要条件(1)私有的构造方法 ...
 - bzoj4216  Pig
			
水题,题目难点大概就是空间限制上了,开longlong会爆,可以开个int数组求前缀和,然后一旦绝对值超过20亿,则将其取模,并记录下当前位置,这样询问时就可以二分这些超过的位置,将其乘以20亿后加上 ...
 - haskell笔记2
			
模式匹配 # haskell_test.hs length' :: [a] -> a length' [] = 0 length' (_:x) = 1 + length' x as模式 xs@x ...
 - 视频处理控件TVideoGrabber中如何混合多个视频源(1)
			
其实一个或是几个作为普通的视频源使用的TVideoGrabber组件,可以进行混合来作为一个TVideoGrabber组件使用,这些普通的组件可以是视频捕捉设备或是视频剪辑等.同时这个混合的组件独立于 ...
 - linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想【转】
			
本文转载自:http://blog.chinaunix.net/uid-25014876-id-110738.html linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想 xxxxxx ...
 - 161118、linux(centos) 项目部署阶段相关命令汇总
			
1.ssh免密码登陆 主要命令 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys-->添加公钥 service sshd restart ...
 - SendKeys:基本使用
			
使用SendKeys将键击和组合键击发送到活动应用程序.此类无法实例化.若要发送一个键击给某个类并立即继续程序流,请使用Send.若要等待键击启动的任何进程,请使用SendWait. 每个键都由一个或 ...
 - JavaScript:九种弹出对话框
			
[1.最基本的js弹出对话框窗口代码] 这是最基本的js弹出对话框,其实代码就几句非常简单: <script LANGUAGE="javascript"> <!- ...