在这个字符串中(这不是我的代码,只是示例输入)
var b_1 = goog.require('a_b_b');
console.log(b_1.b);
a_b_b
应重命名为a.b.b
,因此goog.require('...')
语句中的所有下划线都应重命名为.
。
我想出了这个正则表达式:
/goog\.require\('(?:[^_]*(_)[^_]*)*'\)/g
说明:
goog\.require\(' literal
(?: non-capturing group
[^_]* match anything except underscore
(_) capture underscore
[^_]* match anything except underscore
) end of non-capturing group
* there can be more than one underscore in a goog.require statement
'\) literal
但这只能抓住最后一个下划线。
如何在goog.require('...')
语句中捕获所有下划线?
我不知道它是否有用,但我用javascript取代了下划线,所以看起来不支持(原生)。
要明确:我只希望替换goog.require('...')
语句中的下划线,因此不应替换b_1
中的下划线。
答案 0 :(得分:4)
您可以使用此正则表达式:
var result = str.replace(/goog\.require\('[^']+'\)/g, function (match) {
return match.replace(/_/g, '.');
});
首先查找与goog.require('str')
表单匹配的所有匹配项,并将所有'_'
替换为'.'
。