正則替換replace中$1的用法以及常用正則


 

一、repalce定義

用於在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串。

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+&@#/%=~_|]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM