这是一个创建于 2344 天前的主题,其中的信息可能已经有所发展或是发生改变。
为何执行的返回结果不同
```
new RegExp('<script type="text\/javascript">BigPipe.onPageletArrive\((.*)\);<\/script>').exec('<script type="text\/javascript">BigPipe.onPageletArrive({"id":"123"});<\/script>')
```
```
/<script type="text\/javascript">BigPipe.onPageletArrive\((.*)\);<\/script>/.exec('<script type="text\/javascript">BigPipe.onPageletArrive({"id":"123"});<\/script>')
```
2 条回复 • 2018-05-02 13:21:09 +08:00
|
|
1
meszyouh 2018-05-02 11:58:21 +08:00
用 RegExp 构造时需要对字符串转义的
|
|
|
2
autoxbc 2018-05-02 13:21:09 +08:00
正则构造函数的字符串参数中的 \ 会在构造过程中作为转义符用掉 使得最终的正则表达式没有这个 \
所以,如果需要构造一个最终包含 \ 的正则表达式 应该在构造函数中对 \ 增加一次转义
>>> new RegExp('\d') /d/ >>> new RegExp('\\d') /\d/
这使得构造函数和字面量的行为不一致 所以,除非真的需要动态构造正则 应该统一用字面量形式定义
|