簡體   English   中英

javascript-如何使用正則表達式匹配以下字符串?

[英]javascript - How do I use regex to match the following string?

我是regex的新手,並且以前從未使用過它。

我正在嘗試匹配以下字符串String A並將其替換為String B

字串A:

+ ANYTHING_NO_SPACES.prototype.ANYTHING_NO_SPACES = function()
{
    ANYTHING
}

字串B:

ANYTHING_NO_SPACES.prototype.function_segments.ANYTHING_NO_SPACES.push(function())
{
    ANYTHING
})

ANYTHING_NO_SPACES表示可以在此處放置任何空格

ANYTHING東西都意味着可以在這里放置任何東西,空格等。

我也想忽略換行符,所以換行符與空格相同,或者什么都不是。

編輯:這是到目前為止我得到的:

(\+ \w+.prototype\.\w+ = function\(\)( |\n){([\S\s]*?)})

我想不出如何完成最后一位..改為串入string b

有關如何完成此操作的任何想法?

您可以按照以下方法進行操作:

var output = input.replace(
  /(^|\n)\s*\+\s*(\w+)\.prototype\.(\w+)\s*=\s*function\(\)\n{([\s\S]+?\n})/g,
  "$1$2.prototype.function_segments.$3.push(function())\n{$4)"
);

該正則表達式中值得注意的一些事項:

  • (^|\\n)是字符串的開頭或換行
  • [\\s\\S]匹配包括換行符在內的任何字符
  • [\\s\\S]+? 是非貪婪的,因此它不會一次捕獲多個功能
  • 僅當您的代碼正確縮進時,此方法才有效:由於未對代碼進行解析,因此我們依靠}在行的開頭來檢測函數的結尾

示范:

 document.getElementById("output").innerHTML = document.getElementById("input").innerHTML.replace( /(^|\\n)\\s*\\+\\s*(\\w+)\\.prototype\\.(\\w+)\\s*=\\s*function\\(\\)\\n{([\\s\\S]+?\\n})/g, "$1$2.prototype.function_segments.$3.push(function())\\n{$4)" ); 
 INPUT: <pre id=input> + ANYTHING_NO_SPACES.prototype.ANYTHING_NO_SPACES = function() { ANYTHING } + blabla.prototype.hop = function() { ANYTHING TOO } </pre> OUTPUT: <pre id=output> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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