推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
yuanfnadi

javascript 正则表达式的疑问

  •  
  •   yuanfnadi · May 2, 2018 · 3186 views
    This topic created in 2968 days ago, the information mentioned may be changed or developed.
    为何执行的返回结果不同


    ```
    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 replies    2018-05-02 13:21:09 +08:00
    meszyouh
        1
    meszyouh  
       May 2, 2018
    用 RegExp 构造时需要对字符串转义的
    autoxbc
        2
    autoxbc  
       May 2, 2018
    正则构造函数的字符串参数中的 \
    会在构造过程中作为转义符用掉
    使得最终的正则表达式没有这个 \

    所以,如果需要构造一个最终包含 \ 的正则表达式
    应该在构造函数中对 \ 增加一次转义

    >>> new RegExp('\d')
    /d/
    >>> new RegExp('\\d')
    /\d/

    这使得构造函数和字面量的行为不一致
    所以,除非真的需要动态构造正则
    应该统一用字面量形式定义
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1108 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 23:13 · PVG 07:13 · LAX 16:13 · JFK 19:13
    ♥ Do have faith in what you're doing.