正则表达式语法

一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

Posted in Javascript onOctober 09, 2006

这里有一些可能会遇到的正则表达式示例:

JScript VBScript 匹配 

  • /^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。 
  • /\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个 ID 号码是否由一个 2 位数字,一个连字符以及一个 5 位数字组成。 
  • /<(.*)>.*<\/\1>/ "<(.*)>.*<\/\1>" 匹配一个 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' 在内的任何字符,请使用象 '[.\n]' 的模式。 
  • (pattern) 匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在 JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '\(' 或 '\)'。 
  • (?attern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, '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 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。 
  • \nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。 
  • \un 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, \u00A9 匹配版权符号 (?)。
Javascript 相关文章推荐
javascript脚本编程解决考试分数统计问题
Oct 18 Javascript
javascript制作的网页侧边弹出框思路及实现代码
May 21 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
Mar 04 Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
Nov 09 Javascript
jQuery中页面返回顶部的方法总结
Dec 30 Javascript
jquery仿ps颜色拾取功能
Mar 08 Javascript
微信小程序自定义弹窗实现详解(可通用)
Jul 04 Javascript
jquery实现直播视频弹幕效果
Feb 25 jQuery
javascript实现简易数码时钟
Mar 30 Javascript
Json实现传值到后台代码实例
Jun 30 Javascript
javascript实现左右缓动动画函数
Nov 25 Javascript
详解TypeScript的基础类型
Feb 18 Javascript
QQ登录简单实现代码
Mar 09 #Javascript
javaScript - 如何引入js代码
Mar 09 #Javascript
JavaScript延迟加载
Mar 09 #Javascript
JS 统计时间
Mar 09 #Javascript
JS JavaScript获取Url参数,src属性参数
Mar 09 #Javascript
JAVASCRIPT 对象的创建与使用
Mar 09 #Javascript
JS 容错处理代码, 屏蔽错误信息
Mar 09 #Javascript
You might like
改造一台复古桌面收音机
2021/03/02 无线电
一个简单的网页密码登陆php代码
2012/07/17 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
js Flash插入函数免激活代码
2009/03/31 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
jQuery HTML css()方法与css类实例详解
2020/05/20 jQuery
[12:36]《DOTA2》国服注册与激活指南全攻略
2013/04/28 DOTA
基于Python 中函数的 收集参数 机制
2019/12/21 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
SQL语言面试题
2013/08/27 面试题
创业计划书的主要内容有哪些
2014/01/29 职场文书
经理聘任证明
2015/03/02 职场文书
可可西里观后感
2015/06/08 职场文书
回门宴新娘答谢词
2015/09/29 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
Nginx快速入门教程
2021/03/31 Servers
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL
看完这篇文章获得一些java if优化技巧
2021/07/15 Java/Android
MySQL创建管理子分区
2022/04/13 MySQL
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL