欢迎来到农夫的博客

半亩方塘一鉴开, 天光云影共徘徊。 问渠哪得清如许? 为有源头活水来!

JavaScript正则表达式

JavaScript正则表达式

正则表达式经常被简称为模式,正则表达式是由正则表达式语言创建的,正则表达式语言并不是一种完备的程序设计语言。更准确的说,正则表达式语言是内置于其他语言或软件产品的“迷你”语言。

定义正则表达式

js中的正则表达式用RegExp对象表示,有两种方式创建RegExp对象。
一种是通过一种特殊的直接量语法创建
   var pattern = /s$/
另一种是使用RegExp()构造函数
    var pattern = new RegExp('s$')
如果需要修饰符
    var pattern = /s$/i
    var pattern = new RegExp('s$','i')

js中正则表达式语法

js中正则表达式还是比较弱的,比如不支持后行断言,不支持嵌入条件。

基础字符

^ $ . * + ? = ! : | \ / ( ) [ ] { }
字符 匹配
\ 做转义,即通常“\”后面的字符不按原来的意义解释,如/b/匹配字符‘b’,而/\b/转义为匹配一个字符的边界。

对正则表达式功能字符的还原,如“*”表示匹配它前面元字符0次或n次,而加“\”后,/a\*/匹配“a*”
^ 匹配一个输入或一行的开头,/^a/匹配以a开头的输入
$ 和^相反, 匹配一个输入或一行的结尾
() 标记一个子表达式的开始和结束位置。
[ 标记一个钟括号表达式的开始。
   
   
   
   
 
 
 
 
 
 
 
直接量字符
直接量字符包括字面含义的字母和数字、非字母的字符、和一些具有特殊含义的字符,后面两种需要转义。
字符 匹配
字母和数字 自身
\0 NUL字符(\u0000)
\t 制表符(\u0009)
\n 换行符(\u000A)
\v 垂直制表符(\u000B)
\f 换页符(\u000C)
\r 回车符(\u000D)
\xnn 由十六进制数nn指定的拉丁字符,例如,\x0A等价于\n
\uxxxx 由十六进制数xxxx指定的Unicode字符,例如\u0009等价于\t
\cX 控制字符^X,例如,\cJ等价于换行符\n
 
 
 
 
 
 
 
 
 
 
 
 
Windows使用\r\n表示文本行结束,Unix、Linux只使用\n表示文本结束。
 
字符类
将直接量字符单独放进方括号内就组成了字符类,一个字符类可以匹配它所包含的任意字符。由于某些字符类非常常用,因而在js的正则表达式语法中,使用了特定字符的转义字符来表示它们。
字符 匹配
[...] 方括号内的任意字符,如[xyz] 匹配这个集合中的任意一个字符
[...] 不在方括号内的任意字符
. 除换行符和其他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] 退格直接量(特例)  匹配一个退格符
 
 
 
 
 
 
 
重复字符
字符 匹配
{n,m} 匹配前一项n-m次
{n,} 匹配前一项n次以上
{n} 精确匹配前一项n次
? 匹配前面元字符0次或1次,如/ba*/ 等价于b,ba
+ 匹配前面元字符1次或n次,如/ba*/ 等价于ba,baa,baaa,……
等价于?和+的并集,匹配前面元字符0次或n次,如/ba*/ 等价于b,ba,baa,……
 
 
 
 
 
选择
字符 匹配
| 匹配的是该字符左边的子表达式或右边的子表达式
 
 
运算符优先级
正则表达式从左到右进行计算,并遵循优先级顺序,与算术表达式非常类似。
运算符 描述                             
\ 转移符
(),(?:),(?=),[] 圆括号和方括号
*,+,?,{n},{n,},{n,m} 限定符
^,$,\任何元字符、任何字符 定位点和序列(即;位置和顺序)
| 替换,“或”操作
字符具有高于替换运算符的优先级,使得“m|food”匹配“m”或“food”。
 
 
 
 
常用正则表达式组合
验证邮箱   /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/
    也可以写成 /^(\w+[_|\.])*\w+@(\w+[_|\.])*\w+\.[a-zA-Z]{2,3}$/
等等。。
正则表达式的使用
使用正则表达式的方法match,exec,test
test (regexp.test(str))
    返回值boolean类型,制作单纯的判断
exec(regexp.exec(str))
    返回匹配到的字符串,如果没有匹配的则返回null
match (str.match(regexp))
    和exec一样,但参数是正则表达式

posted on 2016-11-10 10:01  allTime  阅读(253)  评论(0编辑  收藏  举报

导航