![](/img/trans.png)
[英]How do I make an anchored regex match in the middle of a string in 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.