V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
jmyz0455
V2EX  ›  JavaScript

Javascript 如何截取字符串中,第一个指定字符后面不包含这个字符的所有字符?

  •  
  •   jmyz0455 · 2016-11-24 09:58:00 +08:00 · 2633 次点击
    这是一个创建于 2951 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有如下数据:

    2016/11/1&2016/11/2&2016/11/4&2016/11/6&2016/11/8&2016/11/10&2016/11/12&2016/11/14&2016/11/9

    在实际环境中,每段 yyyy/mm/dd 的长度是不确定的,可能还会夹杂一些数据,这里只是简单的例子。现在要匹配出:

    2016/11/2&2016/11/4&2016/11/6&2016/11/8&2016/11/10&2016/11/12&2016/11/14&2016/11/9

    如何用正则表达式匹配出“第一个 & 后面不包含这个 & 的所有字符串”?

    PS :用什么原生的方法能不用正则也能达到同样效果?

    第 1 条附言  ·  2016-11-24 10:55:10 +08:00
    抱歉,表达不清晰,谢谢各位指出和解答,问题的正确描述就是 @Yuguo 说的:
    如何截取字符串,得到第一个指定字符之后的字符串(不含该字符)?
    14 条回复    2016-11-25 22:06:09 +08:00
    fancy967
        1
    fancy967  
       2016-11-24 10:08:58 +08:00
    没看懂你的意思,“第一个 & 后面不包含这个 & 的所有字符串”是指 第一个$后面的所有字符串,但是不以$开头是吗
    Yuguo
        2
    Yuguo  
       2016-11-24 10:12:42 +08:00
    s.replace(/(.*?)&/,"")

    不用正则:

    let index = s.indexOf('&');
    s = s.substr(index+1);
    muziki
        3
    muziki  
       2016-11-24 10:12:54 +08:00 via iPhone
    你这匹配出来的难道不是偶数?
    wodertian
        4
    wodertian  
       2016-11-24 10:12:56 +08:00
    str.substr(str.indexOf("&")).replace(/&/g,"") 这种效果?
    Yuguo
        5
    Yuguo  
       2016-11-24 10:14:27 +08:00
    楼主表达不清楚,我猜测可能意思是:

    JavaScript 如何截取字符串,得到第一个指定字符之后的字符串(不含该字符)?
    debiann
        6
    debiann  
       2016-11-24 10:20:48 +08:00 via iPhone
    split slice join
    otakustay
        7
    otakustay  
       2016-11-24 10:20:54 +08:00
    我的理解是 str.split('&')[1]就行了……
    wssgcg1213
        8
    wssgcg1213  
       2016-11-24 10:31:42 +08:00
    `/&([^&]+)/`
    narrowei
        9
    narrowei  
       2016-11-24 10:38:25 +08:00
    (?<=&)[^&]*
    这样吗?
    获取&后面的字符串,但是不包含这个&并且不含有后面一个&
    比如&2016/11/4&2016/11/6&
    得到的是 2016/11/4 和 2016/11/6
    SuujonH
        10
    SuujonH  
       2016-11-24 10:48:30 +08:00
    split 不行么...
    jmyz0455
        11
    jmyz0455  
    OP
       2016-11-24 10:55:54 +08:00
    @fancy967 是的,谢谢指出
    ywm8812
        12
    ywm8812  
       2016-11-24 10:56:02 +08:00
    `&([^&]*)`
    DiamondbacK
        13
    DiamondbacK  
       2016-11-24 11:07:37 +08:00
    虽然问题表述不完美,但是所给出的想要的输出结果已经足以说明楼主的意图了。认真看主帖的话,对题意应该不会有什么不明白。
    jeffjade
        14
    jeffjade  
       2016-11-25 22:06:09 +08:00
    let "2016/11/1&2016/11/2&2016/11/4&2016/11/6&2016/11/8&2016/11/10&2016/11/12&2016/11/14&2016/11/9"

    let tempArr = str.split("&")

    tempArr.splice(0,1)

    let result = tempArr.join('&')



    http://www.jeffjade.com/2016/11/24/116-JavaScript-string-operation/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3429 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 11:15 · PVG 19:15 · LAX 03:15 · JFK 06:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.