我在正则表达式方面很糟糕,所以我会以尝试更好地描述我的问题的名义,以一种非常规的方式传达我的问题。
var TheBadPattern = /(\d{2}:\d{2}:\d{2},\d{3})/;
var TheGoodPattern = /([a-zA-Z0-9\-,.;:'"])(?:\r\n?|\n)([a-zA-Z0-9\-])/gi;
// My goal is to then do this
inputString = inputString.replace(TheGoodPattern, '$1 $2);
问题:我想匹配所有好的模式并进行后续查找/替换,除非它们是由坏模式进行的,有什么想法吗?我能够用其他支持lookbehind的语言来完成此任务,但如果没有它我会不知所措? (ps:据我了解,JS不支持lookahead/lookbehind,或者如果你愿意的话,'?>!', '?
JavaScript 确实支持前瞻。由于您只需要向后查找(而不是向前查找),因此有一个解决方法(这并不能真正提高代码的可读性,但它有效!)。所以你可以做的就是反转字符串和模式。
inputString = inputString.split("").reverse().join("");
var pattern = /([a-z0-9\-])(?:\n\r?|\r)([a-z0-9\-,.;:'"])(?!\d{3},\d{2}:\d{2}:\d{2})/gi
inputString = inputString.replace(TheGoodPattern, '$1 $2');
inputString = inputString.split("").reverse().join("");
请注意,您已经多余地使用了大写字母(它们正在被处理)i
修饰符)。
如果您提供一些示例输入,我实际上会为您测试它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)