我需要从 JavaScript 代码中查找和替换变量。
假设我需要在给定代码中搜索“长度”,我想排除“x.length”或“linelength”
示例输入 - 使其更易于调试
var sampleStringWhichWorks = 'function checkLength(l, ls){\n' +
'var line, lines, len, length01, linelength11;\n' +
'line = l;\n' +
'lines = ls;\n' +
'len = line.length12;\n' +
'length02 = lines.length13;\n' +
'if(len==length03){\n' +
'len--;\n' +
'length04= length05 + 1;\n' +
'}\n' +
'linelength14 = len + length06;\n' +
'return linelength15;\n' +
'}\n';
这个 /([^az.])length[\d]{2}([^az])/mig 表达式解决了这个问题,但是对于像 "length04=length05 + 1" 这样的行它只捕获第一个长度并忽略第二个.
它适用于“length04 = length05 + 1”并捕获两个实例。
我添加了 [\d]{2} 只是为了更好地理解,这里的预期结果是捕获所有以 0 结尾的“长度”并忽略以 1 结尾。
我尝试了其他选项,例如指定 [^az]{0,1},但没有解决问题。
在此处检查 jsFiddle 。
实际输入和正则表达式 (/([^az.])length([^az])/mig)
function checkLength(l, ls){
var line, lines, len, length, lineLength;
line = l;
lines = ls;
len = line.length;
length = lines.length;
if(len == length){
len--;
length=length+1;
}
lineLength = len + length;
return lineLength;
}
由此产生的预期结果
- var line, lines, len, length , lineLength;
- 长度=线。长度;
- 如果(长度 ==长度){
- 长度=长度+ 1;
- 线长= 长度 +长度;