正则表达式语法总结(转)

271 阅读3分钟

(1)直接量字符

字符

匹配

字母和数字字符

自身

\o

NUL字符

\t

制表符

\n

换行符

\v

垂直制表符

\f

换页符

\r

回车符

\xnn

由十六进制数nn指定的拉丁字符,\x0A=\n

\uxxxx

由十六进制数xxxx指定的Unicode字符,\u0009=\t

\cX

控制字符^X,\cJ=\n

(2)字符类

字符

匹配

[…]

方括号内的任意字符

[^…]

不在方括号内的任意字符

.

除换行符和其他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]

退格直接量

(3)重复字符(贪婪匹配)

字符

含义

{n,m}

匹配前一项至少n次,但不能超过m次

{n,}

匹配前一项至少n次或者更多次

{n}

匹配前一项n次

?

匹配前一项0次或者1次(可选项)

{0,1}

+

匹配前一项1次或者多次

{1,}

*

匹配前一项0次或者多次(不限次)

{0,}

非贪婪匹配:尽可能少的匹配

??、+?、*?、{n,m}?

(4)选择、分组、引用字符

字符

含义

|

选择,匹配左右子表达式(从左往右,若左边匹配则忽略右边)

(…)

组合

(?:…)

只组合

\n

和第n分组第一次匹配的字符相匹配

(5)锚字符

字符

含义

^

匹配字符串的开头

$

匹配字符串的结尾

\b

匹配一个单词的边界

Eg:\bhi\b

\B

匹配非单词边界的位置

(?=p)

正向先行断言,要求接下来的字符都与p匹配,但不包括p那些字符

(?!p)

负向先行断言,要求接下来的字符不与p匹配

(6)修饰符

字符

含义

i

执行不区分大小写的匹配

g

执行全局匹配,找到所有匹配

m

多行匹配模式

Eg:/java$/im → “java”或者“Java\nis fun”

(7)String对象

方法

示例

返回

特殊

search()

“JavaScript”.search(/script/i)

返回4

第一个与之匹配的子串的起始位置,找不到则返回-1

不支持全局检索,忽略修饰符g

replace()

text.replace(/javascript/gi,“JavaScript”)

text.replace(/“([^”]*)”/, ‘“$1”’)

替换后的字符串

$数字

参数若非正则表达式,则直接搜索

match()

“1 plus 2 equals 3”.match(/\d+/g)

返回[“1”, “2”, “3”]

由匹配结果组成的数组,未匹配则返回null

非全局搜索时,a[0]存放完整匹配,a[1]存放a[0]与第一个括号括起来表达式相匹配的子串,所以a[n]存放的是$n的内容

split()

“123,456,789”.split(“,”)

返回[“123”, “456”, “789”]

“1, 2, 3, 4, 5”.split(/\s*,\s*/)

返回[“1”, “2” ,“3”, “4”, “5”]

拆分后的子串数组

参数是正则表达式时,可以指定分隔符,允许留白

(8)RegExp对象

方法

示例

返回

特殊

regExp()

var zipcode=new RegExp(“\\d{5}”, “g”)

RegExp对象

第一个参数正则表达式主体部分(两斜线之间)

第二个参数可选,修饰符

“\”转义字符前缀

exec()

var pattern=/Java/g;

var text=”JavaScript is more fun than Java!”;

var result=pattern.exec(text);

同match。

数组.index:发生匹配的字符位置

数组.input:引用正在检索的字符串

数组第一个元素为与正则表达式匹配的字符串,余下的是与圆括号内的子表达式匹配的字符串。

同一个正则表达式第二次调用exec()时,将从lastIndex出开始检索。

test()

var pattern=/java/I;

pattern.test(“JavaScript”);

只要存在匹配就返回true,否则返回false

也可使用lastIndex属性

属性

含义

类型

source

正则表达式的文本

只读字符串

global

是否带有修饰符g

只读布尔值

ignoreCase

是否带有修饰符i

只读布尔值

multiline

是否带有修饰符m

只读布尔值

lastIndex

若有修饰符g,该属性存储在整个字符串中下一次检索的开始位置

可读/写整数(exec和text方法会用到)

转载自:www.cnblogs.com/dreamsqin/p…