![](/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.