1)match()方法:在字符串上调用match()方法,与在RegExp实例上调用exec()方法相同。接收1个参数——正则表达式或RegExp对象。返回一个数组,数组的第一项是与整个模式匹配的字符串,之后的每一项是与各个子模式匹配的字符串。
2)search()方法:从头开始向后查找。接收1个参数——正则表达式或RegExp对象。返回第一个匹配项的索引,未找到匹配结果则返回-1。
3)replace()方法:替换字符串。接收2个参数——第一个参数是一个正则表达式或RegExp对象或字符串(字符串不会被转换为正则表达式),第二个参数是一个字符串或函数。若第一个参数是字符串,则只会替换第一个子字符串,若想替换所以子字符串,需要使用带有g标志的RegExp对象。
a、第二个参数为字符串时,使用特殊的字符序列,将正则表达式操作得到的值插入到结果字符串中。
特殊的字符序列
替换文本
$$
$
$&
匹配整个模式的子字符串
$'
匹配的子字符串之前的子字符串
$`
匹配的子字符串之后的子字符串
$n
匹配第n个子模式的子字符串,n等于0-9.若正则表达式中没有定义子模式,则使用空字符串
$nn
匹配第nn个子模式的子字符串,nn等于01-99.若正则表达式中没有定义子模式,则使用空字符串
var str = "cat, fat, eat"; var result = str.replace(/(.at)/g, "my($1)"); alert(result);//my(cat), my(fat), my(eat)
b、第二个参数为函数时,可以实现更为精细的替换操作。
在只有一个匹配项(即与模式匹配的字符串)时,向函数传递3个参数——模式的匹配性、模式匹配项在字符串中的位置和原始字符串。在正则表达式中定义了多个子模式的情况下,向函数传递的参数依次是模式的匹配项、第一个子模式的匹配项、第二个子模式的匹配项、......、模式匹配项在字符串中的位置和原始字符串。返回替换文本。
var str = "<a href = \"test.jsp\">link</a>"; var result = str.replace(/[<>"&]/g, function(match, positon, originalStr) { switch(match) { case "<": return "<"; case ">": return ">"; case "&": return "&"; case "\"": return """; } }); alert(result);//<a href = "test.jsp">link</a>
4)split()方法:第一个参数为分隔符(字符串或RegExp对象,字符串不会被转换为正则表达式),第二个参数可选,指定返回的字符串数组的大小。返回分割后的字符串数组。
var strs1 = str.split("|", 2);//["cat","fat","eat"] var str = "cat|fat|eat"; var strs1 = str.split("|"); alert(strs1);//cat,fat,eat var strs2 = str.split("|", 2); alert(strs2);//cat,fat var strs3 = str.split(/[^\|]+/); alert(strs3);//,|,|,
strs3的分隔符为“cat”、"fat"、“eat”,因此返回的数组第一项和最后一项时空字符串。
---localeCompare()方法:
比较两个字符串,若字符串在字母表中应该排列在字符串参数之前,返回一个负数(大多数情况是-1),若在之后,返回一个正数(大多数情况是1),若相等,返回0。
alert("world".localeCompare("hello"));//1
---fromCharCode()方法:
String类的静态方法,接收一或多个字符编码,转换为字符串,与charCodeAt()是相反的操作。
alert(String.fromCharCode(104, 101, 108, 108, 111));//"hello"