1 什么是RegExp
RegExp 是正则表达式的缩写,而正则表达式是一个字符串。一种查找规则的表示形式,用来描述要检索的内容。 正则表达式可用来解析、格式查找、替换等等。
tip:()是表示子表达式。eg:/(\w)/s*中\w为子表达式
2 定义RegExp对象
两种方式:直接量/pattern/attribute 构造函数 new RegExp(pattern,attributes); 其中pattern是字符串?? attributes是一个可选字符,包括“g”(全局匹配)“i”(匹配不区分大小写)“m”(多行匹配)??
eg:var reg1=new RegExp("abc","g"); var reg3=new RegExp("\w");
var reg2=/abc/g; var reg4=/\w/;
3 方法
RegExp对象具有三个方法:
1. RegExpObject.test(string); 用于检测一个字符串是否匹配某种模式;返回值true/false;
eg:var str = "ab c"; var patt1 = new RegExp("b c"); var result = patt1.test(str); 返回true。
2. RegExpObject.exec(string);用于检索字符串中的正则表达式的匹配;如果不匹配,返回null,如果匹配,返回一个数组,数组的第0个元素是与正则表达式相匹配的文本,第1个元素是RegExpObject的第1个子表达式相匹配的文本,以此类推。???数组有三个属性:length(长度,从1开始) index(在string中匹配文本的第一个字符的位置,从0开始) input(被检索的字符串)
exec()的执行即是是带有g的情况下,也只是返回第一次匹配到的结果,将RegExpObject的lastIndex属性设置为这个匹配文本的最后一个字符的下一个位置。所以,用exec()方法来比例字符串的所有匹配文本,需要反复调用exec(),当找不到时,返回null,同事lastIndex属性重置为0.var str = "abc abc"; var reg = new RegExp("a","g");
while ((result = reg.exec(str)
) != null) { document.write(result); document.write(patt.lastIndex
); }// a 1 a 5
所以,要注意要需要重新检索同一个string的时候,将lastIndex属性归0,而不是保留上一次的结果。
3. RegExpObject.compile(regexp,modifier)用于改变和重新编译正则表达式。
eg:reg=/\w/g; reg=/man/g; reg.comile(reg); 重新编译 reg=/\w/g; reg.compile("d");改变 ????
4 其他支持正则表达式的String对象的方法
1. stringObject.search(regexp) 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串;返回stringObject中第一个与regexp相匹配的子串的起始位置。 如果没有,返回-1.但是,该方法不执行全局匹配,忽略g。
2. stringObject.match(regexp) 用于在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。返回存放匹配结果的数组或null。
如果没有g,那么方法只能执行一次,没有找到则返回null。否则,返回一个数组,数组的第0个元素存放的是匹配文本,其余缘故存放的是与正则表达式的子表达式匹配的文本。数组包含两个属性,ingdex是匹配文本的起始字符在stringObject中的位置,input是对stringObject的引用。
如果有g,则match()方法执行全局检索,找到stringObject中所有匹配子字符串。没有返回null,有则返回数组,数组没有index和input属性。
3. stringObject.replace(regexp/substr,replacement) 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。返回的是新的字符串。
如果有g则为全局替换,否则替换第一次匹配字符。从匹配模式得到的字符串可用于替换。
$1...$99为regexp中第1到第99个子表达式相匹配的文本。
$&为regexp相匹配的子串。???感觉是原本的字符串
$`位于匹配子串左侧的文本
$‘位于匹配子串右侧的文本
$$直接量符号???
如果replacement为函数,每个匹配都会调用该函数,函数的第1个参数是匹配模式的字符串,然后是子表达式匹配的字符串,接着是匹配在stringObject中的位置,最后是stringObject本身。函数返回的值将作为替换文本使用,每一匹配调用函数,得到的返回值替换这次匹配的文本。
4. stringObject.split(separator,howmany)作用是把一个字符串分割成字符串数组。返回的是一个数组,其中数组并不包含separator。但是,如果正则表达式是含有自表达式的正则表达式,那么返回的数组中包含这些子表达式匹配的字串(单不包含与整个正则表达式匹配的文本)。
如果用“”作为separator,那么每一个字符之间都会被分割。
5.符号
1. 方括号[]
用于查找某个范围内的字符。
[abc]查找a、b、c中任何一个字符 eg:/[ab]/
原文:http://www.cnblogs.com/ClaireHu/p/4884013.html