什么事正则表达式:正则表达式就是一个描述通用模型的字符串对象。
正则表达式可以干什么:可以用来进行查找文本中的字符串、转换、格式化、检查、替换、截取等操作。功能是不可小觑啊。
一、语法
a)、比如说要在一段文本中进行一个字符的查找,那肯定就得指定按照什么样的规则来查找,这个规则就是
pattern了。在查找的过程中如果还有一些需求比如想忽略大小写,或全文查找那就得指定一个修饰符参数了,这就是modifier了。好了,现在就来说明一下创建正则表达式的两种方法。
1、使用new关键字创建。
var regObject = new RegExp(pattern,modifiers) ;
2、直接静态指定。(更常用一些,注意一点在使用patter时不要忘了前后的斜线)
var regObject = /pattern/mofifiers ;
b)、正则表达式中的一些参数和方法
1、modifier参数
i(case-insensitive)表示忽略大小写。举一个例子。
var str = "I am akwolf!!!" ;
var patt = /i/ ;
var ts = str.match(patt) ;
document.write(ts) ;
返回的结果为null
加上i修饰符
var str = "I am akwolf!!!" ;
var patt = /i/i ;
var ts = str.match(patt) ;
document.write(ts) ;
返回的结果为I
g(global)表示全局匹配。
g(global)表示全局匹配。
不加g修饰符例子:
var str = "I am akwolf!!!" ;
var patt = /a/ ;
var ts = str.match(patt) ;
document.write(ts) ;
返回的结果为a
加上g修饰符:
var str = "I am akwolf!!!" ;
var patt = /a/ig ;
var ts = str.match(patt) ;
document.write(ts) ;
返回结果为a,a
m(multiline)表示匹配多行
m(multiline)表示匹配多行
2、一些方法
string.match(patt) 返回匹配的值。
patt.test(string) 返回是否匹配成功 的boolean值
patt.exec(string) 返回匹配成功的值,与match的用法大体相同
patt.compile(regexp,modifier) 重新指定匹配规则
3、用方括号括起来的匹配规则
Brackets
Brackets are used to find a range of characters:
Expression | Description |
---|---|
[a-c] | 返回与方括号中范围能匹配到的字符 |
[^a-c] | 返回除与方括号中范围匹配到的字符 |
[0-9] | 返回数字 |
[A-Z] | 返回A到Z之间的字符 |
[a-z] | 返回a到z之间的字符 |
[A-z] | 返回A到z之间的字符(在Ascii码中大写字母的码值比小写的码值要小) |
[adgk] | 返回与方括号中能匹配到的字符 |
[^adgk] | 返回除与方括号中匹配到的字符 |
(red|blue|green) | 返回指定的替换值 |
例子:
var str = "I am akwolf!!!";
var patt = /[^a-h]/ig; //匹配a-h之间的字符
var ts = str.match(patt);
document.write(ts);
匹配值:a,a,f
var str = "I am akwolf!!!";
var patt = /[^a-h]/ig; //匹配非a-h之间的字符
var ts = str.match(patt);
document.write(ts);
匹配值:I, ,m, ,k,w,o,l,!,!,!
var str = "19900704" ;
var patt = /[0-5]/ig; //匹配0-5之间的字符
var ts = str.match(patt);
document.write(ts);
匹配值:1,0,0,0,4
var str = "19900704" ;
var patt = /[^0-5]/ig; //匹配6-9之间的字符
var ts = str.match(patt);
document.write(ts);
匹配值:9,9,7
var str = "I am akwolf!!!";
var patt = /[A-z]/ig; //匹配所有单词之间的字符
var ts = str.match(patt);
document.write(ts);
匹配值:I,a,m,a,k,w,o,l,f
var str = "I am akwolf!!!";
var patt = /[ak]/ig; //匹配a,k的字符
var ts = str.match(patt);
document.write(ts);
匹配值:a,a,k
var str = "I am akwolf!!!";
var patt = /[ak]/ig; //匹配非a,k的字符
var ts = str.match(patt);
document.write(ts);
匹配值:I, ,m, ,w,o,l,f,!,!,!
var str = "I am akwolf!!!";
var patt = /(ak)/ig; //匹配ak的字符
var ts = str.match(patt);
document.write(ts);
匹配值:ak
4、元字符
Metacharacters
元字符具有通用的匹配意义:
Metacharacter | Description |
---|---|
. | 匹配单个字符,除了换行符和行结束符 |
\w | 匹配单词字符(word) |
\W | 匹配非空白字符 |
\d | 匹配数字字符(digit) |
\D | 匹配非数字字符(digit) |
\s | 匹配空白字符(whitespace) |
\S | 匹配非空白字符 |
\b | 匹配开始或结束单词 |
\B | 匹配非开始或结束单词 |
\0 | Find a NUL character |
\n | 匹配换行符 |
\f | Find a form feed character |
\r | Find a carriage return character |
\t | Find a tab character |
\v | Find a vertical tab character |
\xxx | Find the character specified by an octal number xxx |
\xdd | Find the character specified by a hexadecimal number dd |
\uxxxx | Find the Unicode character specified by a hexadecimal number xxxx |
例子:
var str = "I am akwolf!!!#$%%^^@*&";
var patt = /./ig; //匹配除了换行符和行结束符的字符
var ts = str.match(patt);
document.write(ts);
匹配值:I, ,a,m, ,a,k,w,o,l,f,!,!,!,#,$,%,%,^,^,@,*,&
var str = "I am akwolf!!!#$%%^^@*&";
var patt = /\w/ig; //匹配单词字符,注意反斜杠(\)不可少
var ts = str.match(patt);
document.write(ts);
匹配值:I,a,m,a,k,w,o,l,f
var str = "I am akwolf!!!#$%%^^@*&19900704";
var patt = /\d/ig; //匹配数字字符
var ts = str.match(patt);
document.write(ts);
匹配值:1,9,9,0,0,7,0,4
var str = "I am akwolf!!!#$%%^^@*&1990 07 04";
var patt = /\s/ig; //匹配空白字符
var ts = str.match(patt);
document.write(ts);
匹配值:, , ,
5、数量表示词
量词 | 描述 |
---|---|
n+ | 匹配n至少一次 |
n* | 匹配n任意次 |
n? | 匹配n出现0或一次 |
n{X} | 匹配n出现指定的次数 |
n{X,Y} | 匹配n出现x到y之间的次数 |
n{X,} | 匹配n至少出现x次 |
n$ | 匹配以n结尾的字符 |
^n | 匹配以n开头的字符 |
?=n | 匹配后面接着指定的字符n的字符 |
?!n | 匹配后面接着非指定的字符n的字符 |
例子:
//?=n 就是匹配出一个值,它的后面接着的是不是指定的n 如我想找出包含m的字符条件是其后面接的是akwolf
var str = "I am akwolf !!!#$%%^^@*&1990 07 04 new line";
var patt = /am(?= akwolf)/;
var ts = str.match(patt);
document.write(ts);
匹配值:am
6、正则对象的一些属性
Property | Description |
---|---|
global | 由于检测g修饰符是否指定 |
ignoreCase | 由于检测i修饰符是否指定 |
lastIndex | 返回匹配成功字符串的最后一个单词的索引 |
multiline | 由于检测m修饰符是否指定 |
source | 返回指定的正则匹配规则 |
例子:
var patt = /am(?= akwolf)/;
document.write(patt.global);
匹配值:false
var patt = /am(?= akwolf)/i;
document.write(patt.ignoreCase);
匹配值:true
var str = "I am akwolf !!!#$%%^^@*&1990 07 04 new line";
var patt = /[0-9]/ig;
if(patt.test(str)){
document.write(patt.lastIndex);
}
匹配值:25
var patt = /[0-9]/ig;
document.write(patt.source);
匹配值:[0-9]