var s='abc';
console.log(s.localeCompare('ab')); // => 1 :实例比参数大
console.log(s.localeCompare('abc')); // => 0 :实例与参数相等
console.log(s.localeCompare('abd')); // => -1 :实例比参数小
4.7 match(regexp) :使用正则表达式进行匹配查找
参数:
①regexp {regexp} :正则表达式,eg:/\d+/
返回值:
根据正则表达式是否带属性'g',返回不同的结果;若没匹配,就返回 {null}:
①正则表达式不带属性'g',执行一次匹配,返回{单个匹配}结果对象,对象包含以下属性:
数组序号:表示匹配结果,0为匹配文本,1为从做到右第1个圆括号匹配结果,2为第二个圆括号,依此类推
index属性:表示匹配文本在匹配源的开始位置
input属性:表示匹配源
②正则表达式带属性'g',执行全局匹配,找到字符串所有匹配对象,返回一个{字符串数组}:数组元素包含string中的每一个匹配对象,不包含正则表达式括号内的字串,也不提供index和input属性。
示例:
复制代码 代码如下:
// 1.单个匹配
var s = 'a1b2c3d4';
var mc = s.match(/\d+/); // => 获取第一个正则匹配的结果
if (mc != null) {
console.log(mc.index); // => 1 :匹配结果在匹配源的起始位置
console.log(mc.input) // => a1b2c3d4 :匹配源
console.log(mc[0]); // => 1 :获取匹配到的结果
}
// 2.全局匹配
var mcArray = s.match(/\d+/g); // => 获取全部正则匹配的数字
if (mcArray != null) {
for (var i = 0,len=mcArray.length; i < len; i++) {
var mc=mcArray[i];
console.log(mc); // => 1,2,3,4 :获取匹配到的结果
}
}
// 3.带括号的匹配
s = 'a1b2c3d4';
mc = s.match(/[a-z]([1-9])/); // => 获取第一个正则匹配的结果
if (mc != null) {
console.log(mc.index); // => 0 :匹配结果在匹配源的起始位置
console.log(mc.input) // => a1b2c3d4 :匹配源
console.log(mc[0]); // => a1 :序号0表示匹配到的结果
console.log(mc[1]); // => 1 :序号1表示第一个括号内的子匹配结果
}
4.8 replace(regexp, replaceStr) :替换正则表达式匹配的子串,并返回替换后的字符串
参数:
①regexp {regexp} :正则表达式。eg:/\d+/
②replaceStr {string | function} :
1)若是字符串,表示替换的字符串,匹配到字串都替换成此字符串;
字符串中的$字符有特殊的含义:
$1,$2 ... $99 :表示①参从左到右圆括号的匹配子项
$& :表示整个①参匹配的子项
$$ :美元符号
2)若是函数,表示每个匹配结果都调用此函数,函数的唯一参数为匹配结果,并返回一个替换结果。
返回值:
{string} 返回一个替换后的字符串
示例:
复制代码 代码如下:
var oldStr = 'a1b2c3d4';
// 1.正则匹配到【所有】数字,替换成:','逗号
var newStr = oldStr.replace(/\d+/g, ',');
console.log(newStr); // => a,b,c,d,
// 2.正则匹配到【所有】数字,替换成:匹配结果 + ','逗号
newStr = oldStr.replace(/\d+/g, '$&,');
console.log(newStr); // => a1,b2,c3,d4,
// 3.正则匹配到【所有】数字,每个匹配结果都调用函数,并返回替换后的结果
newStr = oldStr.replace(/\d+/g, function (word) {
if (word % 2 == 0) {
return '偶';
}
return '奇';
});
console.log(newStr); // => a奇b偶c奇d偶
4.9 search(regexp) :返回查找正则表达式第一个匹配的位置
参数:
①regexp {regexp} :正则表达式。eg:/\d+/
返回值:
{int} 返回第一个匹配的结果的位置;若没找到匹配结果返回-1
示例:
复制代码 代码如下:
console.log( 'abcd'.search(/\d+/) ); // => -1 :没有找到数字
console.log( 'abcd1234'.search(/\d+/) ); // => 4 :位置序号为4,返回第一个数字的位置
4.10 slice(start, |end):返回从字符串start位置到end前一个位置的子串
参数:
①start {int} :子串提取的开始位置索引(包括此位置的字符)。
若数字为负,表示从字符串尾部开始计算。如:-1表示倒数一个字符串,-2表示倒数第二个字符。
②end {int} 可选:子串提取的结束位置索引(不包括此位置的字符)。
若数字为负,表示从字符串尾部开始计算。如:-1表示倒数一个字符串,-2表示倒数第二个字符。
若省略此参数,返回从start位置到结束的所有字符。
注意:
子串的提取顺序是从左到有,若start索引位置大于end索引位置,将返回一个空字符串。
返回值:
{string} 返回从字符串start位置到end前一个位置的子串。
示例:
复制代码 代码如下: