正则替换replace中$1的用法以及常用正则
用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
stringObject.replace(regexp/substr,replacement); 参数一:必需,规定的字符串或者正则表达式 参数二:必需,一个字符串值。规定了替换文本或生成替换文本的函数。 !!!replacement 中的 $ 字符具有特定的含义。详情见W3C
二、有$1,$2...的例子
//把 "Doe, John" 转换为 "John Doe" 的形式: var str = "Doe, John"; str.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1"); 说明:$1,$2上就是按顺序对应小括号里面的小正则 捕获到的内容。
三,第二个参数是函数
把字符串中所有单词的首字母都转换为大写: 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] })
四、一个栗子,实现模板字符替换
var obj = { name:'leaf', age:20 } var str = "我是{{name}},name是我的名字,我今年{{age}}岁"; //最终替换成"我是leaf,name是我的名字,我今年20岁"
实现:
function render(template, context) { return template.replace(/\{\{(.*?)\}\}/g, (match, key) => context[key.trim()]); }
说明:
1、.*? 非贪婪匹配模式
2、每个匹配的这则组合执行一次函数
五、其他常用正则替换
//去除空格 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()); }
六、其他
正则匹配url:
/^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i
或者:
(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]