语法:
string.replace(regexp, replacement)参数:
regexp:必需。要搜索的值或正则表达式。
replacement:必需。指定替换文本或生成替换文本的函数。
返回值:已替换指定值的新字符串。
w3school:JavaScript String replace() 方法
一、常规使用
将aaa替换为111:
var str = "aaa,bbb,ccc";
str.replace('aaa', "111");//输出'111,bbb,ccc'
将连续的字母替换为111:
var str = "aaaaaaa,bbbbbb,ccc";
str.replace(/\w+/g, "111");//输出'111,111,111'
将所有字母全部替换为1:
var str = "aaa,bbb,ccc";
str.replace(/\w/g, "1");//输出'111,111,111'
二、$1、$2、...、$99
var str = "aaa,bbb,ccc";
str.replace(/(\w+),(\w+),(\w+)/, "$3,$2,$1");//输出'ccc,bbb,aaa'
- $1代表第一个(\w+)匹配到的内容,即aaa
- $2代表第一个(\w+)匹配到的内容,即bbb
- $3代表第一个(\w+)匹配到的内容,即ccc
var str = "aaa、bbb、ccc";
str.replace(/(\w)+、(\w)+、(\w)+/, "$3$2$1");//输出'cba'
- $1代表第一个(\w)匹配到的内容,即a
- $2代表第一个(\w)匹配到的内容,即b
- $3代表第一个(\w)匹配到的内容,即c
结论:$1、$2、...、$99 表示正则表达式中的括号匹配项的结果。
三、函数
//输出'hello,world'
var str = "Hello,World";
str.replace(/[A-Z]/g, function(val){
return val.toLowerCase()
});
//输出'HELLO,WORLD'
var str = "Hello,World";
str.replace(/[a-z]/g, function(val){
return val.toUpperCase()
});
//输出'000,000,111'
var str = "aaaaaaa,bbbbbb,ccc";
str.replace(/\w+/g, function(val){
return val === 'ccc' ? '111':'000'
});
一个经典的例子——模板字符匹配:
var data = {
title:'标题',
subTitle: '副标题',
content:'内容'
}
var str='这是一段内容,标题是{{title}},副标题是{{subTitle}},内容是{{content}}'
str.replace(/\{\{(.*?)\}\}/g, function(val,key){
return data[key]
});
输出:这是一段内容,标题是标题,副标题是副标题,内容是内容
这里函数的第一个参数是匹配的内容,第二个参数是括号匹配的结果
四、其他常用正则表达式
邮箱格式:^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$
正整数:^[1-9]([0-9])*$
身份证号 | ^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$ |
ip地址 | ^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$ |
数字或英文字母 | ^([0-9a-zA-Z]+)$ |
手机号码 | ^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$ |
日期时间格式YYYY-MM-DD HH:mm:ss | ^(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2})$ |
日期格式YYYY-MM-DD | ^(\\d{4}-\\d{2}-\\d{2})$ |
合法url | (https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|] |
最多三位小数 | ^(?:[1-9]\\d*|0)(?:\\.\\d{1,3})?$ |
大于等于0且最多三位小数 | ^(?!0+(?:\\.0+)?$)(?:[1-9]\\d*|0)(?:\\.\\d{1,3})?$ |
最多两位小数 | ^(?:[1-9]\\d*|0)(?:\\.\\d{1,2})?$ |
大于等于0且最多两位小数 | ^(?!0+(?:\\.0+)?$)(?:[1-9]\\d*|0)(?:\\.\\d{1,2})?$ |
至少两个字符,中文或英文 | ^([a-zA-Z\\u4E00-\\u9FA5]+)$ |
3-15个字符,仅限数字、字母、斜杠、横杠、点 | ^[-/0-9A-Za-z.]{3,15}$ |