javascript权威指南(正则表达式)

javascript中的正则表达式用RegExp对象表示,可以使用RegExp()构造函数来创建RegExp对象

正则表达式的字符类
[...] 方括号内的任意字符
[^...] 不在方括号内的任意字符
.

除换行符和其他unicode行终止符之外的任意字符

\w 任何ASCII字符组成的单词,等价于[a-zA-Z0-9]
\W 任何不是ASCII字符组成的单词,等价于[^a-zA-Z0-9]
\s 任何unicode空白符
\S 任何非unicode空白符的字符,注意\w和\S的区别
\d 任何ASCII数字,等价于[0-9]
\D 除了ASCII数字外的任意字符,等价于[^0-9]

正则表达式的重复字符语法

字符 含义
{n,m} 匹配前一项至少n次,但不能超过m次
{n,} 匹配前一项n次或者更多次
{n} 匹配前一项n次
匹配前一项0次或者1次,也就是说前一项是可选的,相当于{0,1}
+ 匹配前一项1次或者多次,等价于{1,}
* 匹配前一项0次或者多次,等价于{0,}

例子:

/\d{2,4}/ 匹配2-4个数字

/\w{3}\d?/  精确匹配三个单词和1个可选数字

/\s+java\s+/  匹配前面和后面带有一个或多个空白的字符串"java"

/[^(]*/   匹配一个或多个非左括号的字符

/ab|cd|ef/  匹配ab或者cd或者ef

圆括号在正则表达式中的使用:

如/java(script)?/ 可以匹配java,script可有可无

/(ab|cd)+|ef/  可以匹配字符串ef,也可以匹配ab或者cd的一次或者多次重复

\num表示引用 的第num个位置小括号的内容

/['"][^'"]*['"]/我们一般写成这样的/(['"])[^\1]*\1/  其中\1表示的是第一个小括号里面的内容,即['"]

| 选择,匹配的是该符号 左边或者右边的表达式
(...) 组合,将几个项组合为一个单元,也可以记住这个组合,以便后序使用
(?:) 只组合,把项目组合到一个单元,但不进行记忆
\n 和第n个分组第一次匹配的字符相匹配,组是圆括号的表达式

\B匹配边界位置

/\B[Ss]cript/ 于JavaScript和postscript匹配,但是 不与script和scripting匹配

修饰符

修饰符是放在"/"符号之外的,也就是说,他们不是出现在两条斜杠之间的,而是 第二条斜线之后的

字符 含义
i 执行不区分大小写的匹配
g 执行一个全局匹配,简言之,即找到所有匹配,而不是在找到第一个后停止
m 多行匹配模式,^匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束

string支持4种使用正则表达式的方法:

1、search 

"JavaScript".search(/script/i)

2、replace

text.replace(/javascript/gi,"JaveScript")

3、match (返回数组)

"1 plus 2 equals 3".match(/\d+/g)   返回['1','2','3']

4、RegExp属性

RegExp最主要的执行模式匹配的方法是exec(),exec()方法对一个指定的字符串执行一个正则表达式,简言之,就是在一个字符串中执行匹配检索。如果没找到,它就返回null,但如果找到了一个匹配,它将返回一个数组

第二个方法是test()方法

var pattern = /Java/g;
var text = "JavaScript is more fun than  Javal"
var  result
while((result = pattern.exec(text)) != null) {
   alert('Matched' +  result[0] +  '"' + 'at  position' +  result.index +     
           ";next search begins at" +  pattern.lastIndex);
}


var pattern = /java/i
pattern.test("JavaScript")  //返回true

猜你喜欢

转载自www.cnblogs.com/jun-web/p/regexp.html