如何仅替换以下正则表达式(JavaScript)的一部分
How do I replace only a portion of the following regex (JavaScript)?
我正在学习正则表达式和文件保存。作为练习,我想将文件中的每个func
都变成function
:
data.replace(/func'((.*)')/g, 'function')
问题是文件中的func
现在像这样结束:
var thisfunc = function {
}
取而代之的是:
var thisfunc = function() {
}
我应该怎么做,以便正则表达式仅替换func
关键字?
编辑:
输入:
fs.readFile(filename, 'utf8', func(err, data) {
if (err) throw err
console.log('OK: ' + filename)
var newData = data.replace(/func'((.*)')/g, 'function')
console.log(newData)
})
var thisfunc = func() {
}
匹配并仅替换左括号,
特别是如果它们可以像func(a, func(b))
一样嵌套:
data.replace(/func'(/g, 'function(')
注意:在替换字符串需要转义序列进行(
的环境中,请使用function'(
,这在javascript中不是必需
您的正则表达式也匹配参数(在括号中),并且整个匹配项将仅替换为 function
。您可以:
从匹配中排除参数,例如使用前瞻
data.replace(/func(?='((.*)'))/g, 'function')
或"重新"将它们插入替换字符串中:
data.replace(/func'((.*)')/g, 'function($1)')
在这里,您实际上需要一个积极的前瞻性断言。而且您不需要使用捕获组。
data.replace(/func(?='(.*'))/g, 'function')
或
.*?
这里将执行任何字符的非贪婪匹配零次或多次。
data.replace(/func(?='(.*?'))/g, 'function')
(?='(.*?'))
断言关键字 func
后必须跟有一对括号,这些括号可能包含也可能不包含参数。
相关文章:
- 如何使用JavaScript提取此url的一部分
- 通过JavaScript设置的表单字段的值不会作为$_POST的一部分传递给PHP脚本
- href没有在每次单击li的一部分时加载链接.使用javascript使整个li可以点击
- 是否可以将此javascript代码(或其中的一部分)移动到单独的文件中,而不是内联
- Javascript 解包元素的一部分
- JQuery/JavaScript - 突出显示输入或文本区域中的一部分文本
- 如何知道找到的单词是字符串的一部分还是JavaScript中的函数调用
- 将外部javascript文件视为Aspx页面的一部分
- JavaScript未更新$scope变量的一部分
- 当量词是模式的一部分时,JavaScript中的RegExp
- 返回javascript中regex字符串的一部分
- javascript:如何首先加载页面的一部分
- 在表单提交将DOM的一部分替换为分部之后,我应该将ajax成功绑定到什么来使我的javascript工作
- JavaScript:删除一部分代码,并在单击时删除一个元素
- javaScript代码在一个单独的文件中工作,但不是更大文件的一部分
- JavaScript Regexp仅匹配字符串的一部分
- Javascript语句的哪一部分是字面意思
- 撇号标记在javascript字符串中与Backslash一起发送,该字符串使用ajax作为json对象的一部分发送到p
- 如何返回“;成品“;javascript代码的一部分
- JavaScript:将字符串的一部分放入DOM容器中,保存溢出