目录
split
str.split (separator, number) 的参数:
- separator 返回的字串不包括 separator 自身,可以是字符串string,或者正则化表达式;如果字符串中不存在separator,就返回原字串组成的数组;
- number (≥0 可选) 用于指定返回数组的最大长度,如果分割结果的长度大于number ,就只返回前n个字串组成的数组。
replace
str.replace(regexp/substr,replacement):参数
- 被替换的子串(默认是第一个被匹配到的),或者正则化表达式;
- replacement 替换字符串,或生成替换文本的函数。
如果没有匹配到,就返回原字符串;
匹配到了,就返回替换后的字符串,原字符串不会改变。
replacement 中的 $ 字符,表示在替换中使用匹配到的字符串:
$1、$2、...、$n | 与 regexp 中的第 1 到第 n 个子表达式相匹配的文本。 |
$& | 与 regexp 相匹配的子串。 |
$` $' | 位于匹配子串左侧的文本、右侧的文本。 |
$$ | 直接量符号。 |
replacement 是函数时,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。
函数 function ( s, $1,$2,..., index, str ) 所有参数会全部按顺序展开
第一个参数:匹配到的字符串 s ;
接下来的参数:与模式中的子表达式(就是括号里的)匹配的字符串,有几个子表达式就有几个参数(0个或多个);
接下来的参数:index 声明了匹配字串出现的起始位置。
最后一个参数: stringObject 本身。
var str = "how-are-you?"
//转成小驼峰
function transformStr(str) {
return str.replace(/-(\w)/g, function (s, $1) {
// s 是匹配到的字串(-a和-y),$1 是子匹配式(\w)匹配到的(a和y)
return $1.toUpperCase(); // "howAreYou?"
});
}
name = "Doe, John";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1"); // 空格\s 任意次* 一次以上+
// "John Doe"
// 替换 url 中的参数值
function transformStr (url) {
return function (obj) {
for (var i in obj){
// 匹配到 a=1、b=2
url= url.replace( eval('/(' + i + '=)([^&]*)/gi'), i + '=' + obj[i] );
}
return url;
}
}
// 将 '?a=1&&b=2' 替换为 '?a=0&&b=9'
console.log(transformStr ('?a=1&&b=2')({a:0, b:9 }))
match
str.match( regexp/substr )
- 返回存放匹配结果的数组,若没有找到则返回 null。
- 默认只匹配第一个结果,返回数组 [str, $1,..., index, input] 存放匹配文本的相关信息:第 0 个元素是匹配文本,后面的元素是正则子表达式匹配的文本;index 是匹配文本的起始位置;input 属性是对 stringObject 的引用。
- 全局匹配时,返回的数组是 所有匹配文本组成的数组。
search
str.search( regexp)
- 返回第一个匹配子串的起始位置,如果没有找到则返回 -1。
- 不能执行全局匹配
正则化
\b \B(非) | 单词边界(字与空格间的位置) |
\d \D | 数字0-9 ([0-9]) |
\w \W | 字母、数字或下划线([A-z0-9_]) |
\s \S | 空格 包括换行符、制表符等([\t\r\n\v\f]) |