我一直在阅读道格拉斯·克罗克福德的“
JavaScript:The Good Parts”.在其中,他简要介绍了积极和消极的前瞻,但仅仅是对他们所做的事情的简短陈述,以及他们不是JavaScript的一个很好的部分.
除了本书之外,我还没有看到任何提及应该避免这些,无论是在SO还是在正则表达式引导网站上.我想知道我是否可以进一步解释为什么这些是JavaScript的一个不好的部分,以及应该如何避免它们 – 是否有更好的解决方案,或者它是否取决于更好的应用程序设计.
摘录(第75页):
积极的向前看
一个积极的前瞻组有一个(?=前缀.它就像一个非捕获组
除了组匹配后,文本将重绕到组的位置
开始,有效地匹配任何东西这不是一个好的部分.
消极的向前看
负前瞻组有一个(?!前缀.这就像一个积极的前瞻
group,但只有匹配不匹配才会匹配.这不是一个好的部分.
Douglas Crockford的许多建议都是关于代码的“可读性”和“可复制性”,而且还涉及编码器意图的“可复制性”.与道格拉斯不推荐使用的方式相同,例如,在正则表达式中使用点,因为这匹配任何字符,而不解释您想要匹配的内容,使用否定前瞻等于说“我允许除此之外的任何内容”.无论如何,我无法想象为什么不建议使用积极的前瞻,但很多引用IE浏览器的前瞻实现…
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。