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

2016-11-24 09:58:00 +08:00
 jmyz0455

有如下数据:

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 :用什么原生的方法能不用正则也能达到同样效果?

2415 次点击
所在节点    JavaScript
14 条回复
fancy967
2016-11-24 10:08:58 +08:00
没看懂你的意思,“第一个 & 后面不包含这个 & 的所有字符串”是指 第一个$后面的所有字符串,但是不以$开头是吗
Yuguo
2016-11-24 10:12:42 +08:00
s.replace(/(.*?)&/,"")

不用正则:

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/322865

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX