[英]Javascript regex pattern array with loop
我試圖創建一個函數來替換數組中的多個正則表達式值。 如果數組不包含任何引號,則此方法有效,當我要在模式中使用逗號時,這會出現問題。 因此,我一直在嘗試尋找一種沒有運氣的替代方式。 有任何想法嗎?
function removeCharacters(str){
//ucpa = unwanted character pattern array
//var ucpa = [/{/g,/}/g,/--/g,/---/g,/-/g,/^.\s/];
var ucpa = ["/{/","/}/","/--/","/---/","/-/","/^.\s/","/^,\s/"];
for (var i = 0; i < ucpa.length; i++){
//does not work
var pattern = new RegExp(ucpa[i],"g");
var str = str.replace(pattern, " ");
}
return str;
}
工作:
function removeCharacters(str){
//ucpa = unwanted character pattern array
var ucpa = [/{/g,/}/g,/--/g,/---/g,/-/g,/^.\s/,/^,\s/];
for (var i = 0; i < ucpa.length; i++){
var str = str.replace(ucpa[i], " ");
}
return str;
}
精制:
function removeCharacters(str){
var pattern = /[{}]|-{1,3}|^[.,]\s/g;
str = str.replace(pattern, " ");
return str;
}
RegExp
構造函數采用原始表達式,而不用/
字符包裝。 因此,您所有的正則表達式都包含兩個/
s,這不是您想要的。
相反,您應該制作一個實際的正則表達式文字數組:
var ucpa = [ /.../g, /",\/.../g, ... ];
您還可以將所有內容包裝到單個正則表達式中:
var str = str.replace(/[{}]|-{1,3}|^[.,]\s/g, " ")
盡管由於某些正則表達式是荒謬的,所以我不確定這是否正是您想要的,例如,^\\s
永遠無法匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.