[英]Auto escape Regex in JavaScript?
如何從任何可能的正則表達式字符串中創建轉義的正則表達式? 這個問題已經有很多答案了,例如:
function escapeRegex(string) {
return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
}
var text = 'test123',
reString = '\d+',
escaped = escapeRegex(reString),
re = new RegExp(escaped);
console.log(re); //returns /d\+/
console.log(text.match(re)); //returns null
但是這個 function 沒有返回文本中的所有數字,這在本例中是預期的。
如果我正確理解了您的問題,那么您根本不需要轉義 function。 相反,您可以使用Tagged Template 。 像這樣的東西:
function escapeRegex(string) { return string.raw[0]; } var text = 'test123', escaped = escapeRegex `\d+`, re = new RegExp(escaped); console.log(re); console.log(text.match(re));
在字符串不需要任何進一步修改的情況下,您還可以使用String.raw方法而不是標記的 function,如下所示:
escaped = String.raw`\d+`;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.