正则替换replace中$1的用法

一、repalce定义

用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

1
2
3
4
5
stringObject.replace(regexp/substr,replacement);
 
参数一:必需,规定的字符串或者正则表达式
参数二:必需,一个字符串值。规定了替换文本或生成替换文本的函数。
!!!replacement 中的 $ 字符具有特定的含义。详情见W3C

  

二、有$1,$2...的例子

1
2
3
4
5
//把 "Doe, John" 转换为 "John Doe" 的形式:
var  str =  "Doe, John" ;
str.replace(/(\w+)\s*, \s*(\w+)/,  "$2 $1" );
 
说明:$1,$2上就是按顺序对应小括号里面的小正则 捕获到的内容。   

  

三,第二个参数是函数

1
2
3
4
5
6
7
8
9
10
11
12
把字符串中所有单词的首字母都转换为大写:
var  str =  'aaa bbb ccc' ;
uw=str.replace(/\b\w+\b/g,  function (word){
   return  word.substring(0,1).toUpperCase()+word.substring(1);}
   );
说明:匹配一次就执行一次函数,匹配的内容作为参数
 
//把数字转成对应的汉子
var  ary=[ "一" , "二" , "三" , "四" , "五" , "六" ]
"123456" .replace(/\d/g, function (val){
   return  ary[val-1]
})

 

四、一个栗子,实现模板字符替换

1
2
3
4
5
6
var  obj = {
     name: 'leaf' ,
     age:20
}
var  str =  "我是{{name}},name是我的名字,我今年{{age}}岁" ;
//最终替换成"我是leaf,name是我的名字,我今年20岁"

实现:

1
2
3
function  render(template, context) {
   return  template.replace(/\{\{(.*?)\}\}/g, (match, key) => context[key.trim()]);
}

说明:

  1、.*? 非贪婪匹配模式

       2、每个匹配的这则组合执行一次函数

    

五、其他常用正则替换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//去除空格
String.prototype.Trim = function() {
return  this .replace(/\s+/g,  "" );
}
  
//去除换行
function ClearBr(key) {
key = key.replace(/<\/?.+?>/g, "" );
key = key.replace(/[\r\n]/g,  "" );
return  key;
}
  
//去除左侧空格
function LTrim(str) {
return  str.replace(/^\s*/g, "" );
}
  
//去右空格
function RTrim(str) {
return  str.replace(/\s*$/g, "" );
}
  
//去掉字符串两端的空格
function trim(str) {
return  str.replace(/(^\s*)|(\s*$)/g,  "" );
}
  
//去除字符串中间空格
function CTim(str) {
return  str.replace(/\s/g, '' );
}
  
//是否为由数字组成的字符串
function is_digitals(str) {
var  reg=/^[0-9]*$/;  //匹配整数
return  reg.test(str);
}
//单词首字母大写
function uppperCase(str) { return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase()); }

转载于:https://www.cnblogs.com/yzhihao/p/11510128.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值