在 JavaScript 中使用替换删除注释
Remove comments with replace in JavaScript
我希望使用 JavaScript 从 DNS 区域文件中删除所有注释。注释以 DNS 区域文件中的分号 (;
) 开头。但是,我也不希望分号在前面加上反斜杠时被替换。我有一些测试代码,看起来像这样:
var record = 'example.com IN TXT "v=DKIM1''; k=rsa''; p=MIGf..."';
var recordWithCommentRemoved = record.replace(/[^''];['s'S]*?$/gm, '');
console.log(recordWithCommentRemoved); // example.com IN TXT "v=DKIM1'; k=rsa'; p=MIGf..."
上面的代码按预期工作。但是,以下代码替换的字符比预期多一个:
var record = 'test 300 IN A 100.100.100.100;this is a comment';
var recordWithCommentRemoved = record.replace(/[^''];['s'S]*?$/gm, '');
console.log(recordWithCommentRemoved); // test 300 IN A 100.100.100.10
在第二个示例中,我期望的是test 300 IN A 100.100.100.100
.但是,它返回test 300 IN A 100.100.100.10
。那么我的正则表达式有什么问题呢?
你需要确保;
前面没有'
,因此,在;
之前使用(^|[^''])
组,并使用回调替换:
var re = /(^|[^'']);.*/g;
var str = 'example.com IN TXT "v=DKIM1''; k=rsa''; p=MIGf..."'ntest 300 IN A 100.100.100.100;this is a comment';
var result = str.replace(re, function(m, g1){
return g1 ? g1 : ""; // if g1 is set/matched, re-insert it, else remove
});
document.body.innerHTML = result.replace(/'n/g, "<br/>"); // just for display
正则表达式匹配:
-
(^|[^''])
- (捕获组 #1) 字符串的开头 (^
) 或 (|
) 除'
以外的任何字符 ([^'']
) -
;
- 字面;
-
.*
- 换行符以外的零个或多个字符
这也使用替换删除所有注释。
$("#doc").keyup(function(evt) {
var doc = $("#doc").val();
var documentNew = String(doc).replace(/('r'n|'n|'r)/gm, "'n");
var str = documentNew;
var lines = str.split(''n');
var filterred = lines.filter(function(line) {
return line.indexOf('//') != 0;
});
filterred = String(filterred).replace(/;/g, "; 'n");
$("#answerDocument2").html(filterred);
});
textarea {
width: 200px;
height: 200px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h3>Paste Code</h3>
<textarea id="doc"></textarea>
<h3>Copy Formatted Code</h3>
<textarea id="answerswerDocument2" readonly style="resize: none;"></textarea>
相关文章:
- Javascript匹配以从URL中删除部分文件名-替换最后一次出现的内容
- 可以't删除“;C: fakepath "使用javascript替换和regex
- 如何删除重复的选定项目并替换为数量
- 使用替换函数删除 Javascript 中元素的类
- 使用正则表达式删除所有 html 属性(替换)
- jQuery:裁剪以删除图像数据并替换为新数据
- 如何将删除标记替换为输入类型文本
- 为什么javascript替换方法(没有regex)在angularjs表达式中不起作用来删除 
- 为什么不用特殊字符替换选择文本,以及如何删除此特殊字符
- 使用Javascript替换函数从字符串中删除€Symbol
- Chained或Dependent选择Zend_Form jQuery以删除或替换表单元素
- 如何使用jquery删除和替换select选项
- 拼接数组的Javascript只是替换值而不是删除它
- 替换/删除数组中的空条目
- 正则表达式 - 替换方法从字符串中删除运算符产生不希望的结果
- 替换/删除两个字符之间的所有内容
- 字符串替换或通过数组删除
- 在 JavaScript 中使用替换删除注释
- Javascript:使用String.replacement()来替换/删除HTML锚
- jQuery替换/删除没有id或标记的属性