字符串方法 split/search/match/replace + 正则

目录

split

replace

match

search

正则化 


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 的引用。
  • 全局匹配时,返回的数组是 所有匹配文本组成的数组。

str.search( regexp)     

  • 返回第一个匹配子串的起始位置,如果没有找到则返回 -1。
  • 不能执行全局匹配

正则化 

\b        \B(非)单词边界(字与空格间的位置)

\d        \D

数字0-9 ([0-9])

\w        \W字母、数字或下划线([A-z0-9_])
\s        \S空格 包括换行符、制表符等([\t\r\n\v\f])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值