在我的编辑器中,我尝试在许多文件上放置一个正则表达式,这样如果它找到jquery美元函数$
,它会使juqery函数加载const $ = require('jquery');
所以基本上,如果我有这样的文件:
$(document).ready(function () {
$('.btn-toggle-achievement').on('click', function (e) {
var button = e.target;
var el = $(button);
$.post('/achievements_ajax/toggle_achievement', {
status: el.data('enable'),
achievement_id: el.data('achievement-id')
});
});
});
我想编写一个正则表达式来替换$
与const $ = require('jquery');\n
的第一次出现。我在编辑器中使用了replace实用程序。最终结果应该是这样的。
const $ = require('jquery');
$(document).ready(function () {
$('.btn-toggle-achievement').on('click', function (e) {
var button = e.target;
var el = $(button);
$.post('/achievements_ajax/toggle_achievement', {
status: el.data('enable'),
achievement_id: el.data('achievement-id')
});
});
});
这是我到目前为止所得到的: https://regex101.com/r/ooHn9H/1
但此时它取代$
的任何出现。我只想替换第一个。我可以确保正则表达式只匹配第一次出现吗?也许我需要一个负面的lookbehind来检查之前是否已匹配$
?
答案 0 :(得分:3)
在正则表达式中,您设置了全局标志,这意味着它将替换每次出现。关闭全局标志,你就会得到你想要的东西。
编辑:如果您无法关闭全局标记,请匹配第一个$ on上的所有内容:
(\$(?:.|[\r\n\u2028\u2029])*)
答案 1 :(得分:2)
试试这个正则表达式:
[^$]*
<强>解释强>
$
- 断言String的开头const $ = require('jquery');\n
- 匹配任何不是(?=\$)
的字符的出现次数。括号是该组中的这一部分。稍后,此组中捕获的任何内容都将被此组的内容以及演示中显示的行$
替换。MyCustomMigrationPolicy
- 用于验证目前匹配的内容的正面预测后跟My_App_Name.MyCustomMigrationPolicy