MDN 上对于 RegExp 的 Description 底部如此写到:
For example, the following are equivalent:
let re = /\w+/ let re = new RegExp('\w+')
起因是今天修了个 bug,项目中某页面有一堆按钮
这些按钮的类名都类似于 goto-aaa goto-bbb goto-ccc
写于 16 年的代码是通过 btn.className.match(/goto-(\S+)/)[1] 来匹配获取到 aaa 、bbb 、ccc
以前应该是没问题的,如今就同 'goto-aaa'.match(/goto-(\S+)/) 匹配结果为 null 一样,会直接报错
调整为 'goto-aaa'.match(/goto-(\S+)/)[1] 就可以解决问题
但还是挺好奇的,想看看有没有经常在用在关注正则这块的大佬帮忙解解惑,是不是真的有变更,以及要是变更了,
除 \ 和 \ 外,还有哪些变更,在哪里可以看到,谢谢!
1
autoxbc 2020-04-14 19:22:06 +08:00
Web 一向是渐进的,不会有破坏性的变更
楼主贴的 For example, the following are equivalent: let re = /\w+/ let re = new RegExp('\w+') MDN 实际是这么写的 For example, the following are equivalent: let re = /\w+/ let re = new RegExp('\\w+') https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp >> 写于 16 年的代码是通过 btn.className.match(/goto-(\S+)/)[1] ... >> 调整为 'goto-aaa'.match(/goto-(\S+)/)[1] 就可以解决问题 这两个正则不是完全一样? |