【问题标题】:why slice() and substr() methods in javascript doesn't work on regular expressions?为什么 javascript 中的 slice() 和 substr() 方法不适用于正则表达式?
【发布时间】:2013-02-01 10:35:09
【问题描述】:

我的代码是:

var st="man myfile=l/p/nm.mp3 yourfile=/o/mj/nnc.mp3 ou p";
var patt=/myfile.[\W|\w]*.mp3\s/;
var s=patt.exec(st);
var s2=s.slice(3,4);
alert(s2);

但是 slice() 什么也没给我,而 substr() 方法给了我一个错误:

Object doesn't support this method

为什么?

【问题讨论】:

  • .exec 返回一个对象。你的预期输出是什么?
  • @FabrícioMatté 是的! .exec()方法
  • 我的预期输出是一个字符串。我怎样才能转换它?
  • 正如@hooner 回答的那样,索引0 包含完整匹配,因此s[0] 应该这样做。
  • slice, substr 是数组的方法而不是字符串,在这里阅读更多关于这些方法的信息codeforbrowser.com/blog/javascript-arrays 要操作字符串,请使用 indexOf();

标签: javascript expression slice substr


【解决方案1】:

法布里西奥是对的。您的变量 s 是 RegExp 对象。要访问子字符串,您需要执行以下操作:

var s2 = s[0].substr(3,4);

jsFiddle here.

【讨论】:

    【解决方案2】:

    slice: slice() 方法将数组中的选定元素作为新的数组对象返回。

    substring: substring() 方法从字符串中提取两个指定索引之间的字符,并返回新的子字符串。

    var st="man myfile=l/p/nm.mp3 yourfile=/o/mj/nnc.mp3 ou p";
    var patt=/myfile.[\W|\w]*.mp3\s/;
    var s=patt.exec(st); 
    

    s 现在是包含以下内容的数组:["myfile=l/p/nm.mp3 yourfile=/o/mj/nnc.mp3 "]

    var s2=s.slice(3,4);
    

    元素 3 不存在,因此它返回 null

    关于substring 它不能用于数组:) 所以你必须这样做:

    var s2=s[0].substring(3,4);
    

    【讨论】:

      猜你喜欢
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 2011-05-31
      • 1970-01-01
      • 2019-08-26
      • 2016-06-04
      • 1970-01-01
      相关资源
      最近更新 更多