用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
|
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(/w+/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(/[
]/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()); }