正则实例--通过匹配子项一次性转译 < > 左右箭头

我的需求是,把字符串中所有的左右箭头,都专成<和>

比较原始的方法,就是通过链式操作,用两个replace替换一下

var str = '<table><tr>aaa</tr></table>'
var result = str.replace(/\</g, '<').replace(/\>/g, '>')

结果是没问题,但是怎么都感觉有点low。如果能一次性处理完,岂不更好。不然相同都东西还要复制很多遍。于是考虑一下匹配子项。

var str = '<table><tr>aaa</tr></table>'
var regx = /(\<)([^\>]*)(\>)/g
var result = str.replace(regx, function($1,$2,$3,$4){
    $2 = '<'
    $4= '>'
    return $2 + $3 + $4
})

从这个需求来说,区别不大。但是复习一下匹配子项的使用也是好的。

  • 1.每一个()都是一个匹配子项
  • 2.$1是返回都整体匹配子项的匹配结果
  • 3.后续的$2,$3...对应后续匹配到的子项。
  • 4.如果使用匹配子项,必须要有返回值,否则结果为空。

随机浏览