簡體   English   中英

JavaScript 中的自動轉義正則表達式?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM