有如下数据:
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
fancy967 2016-11-24 10:08:58 +08:00
没看懂你的意思,“第一个 & 后面不包含这个 & 的所有字符串”是指 第一个$后面的所有字符串,但是不以$开头是吗
|
2
Yuguo 2016-11-24 10:12:42 +08:00
s.replace(/(.*?)&/,"")
不用正则: let index = s.indexOf('&'); s = s.substr(index+1); |
3
muziki 2016-11-24 10:12:54 +08:00 via iPhone
你这匹配出来的难道不是偶数?
|
4
wodertian 2016-11-24 10:12:56 +08:00
str.substr(str.indexOf("&")).replace(/&/g,"") 这种效果?
|
5
Yuguo 2016-11-24 10:14:27 +08:00
楼主表达不清楚,我猜测可能意思是:
JavaScript 如何截取字符串,得到第一个指定字符之后的字符串(不含该字符)? |
6
debiann 2016-11-24 10:20:48 +08:00 via iPhone
split slice join
|
7
otakustay 2016-11-24 10:20:54 +08:00
我的理解是 str.split('&')[1]就行了……
|
8
wssgcg1213 2016-11-24 10:31:42 +08:00
`/&([^&]+)/`
|
9
narrowei 2016-11-24 10:38:25 +08:00
(?<=&)[^&]*
这样吗? 获取&后面的字符串,但是不包含这个&并且不含有后面一个& 比如&2016/11/4&2016/11/6& 得到的是 2016/11/4 和 2016/11/6 |
10
SuujonH 2016-11-24 10:48:30 +08:00
split 不行么...
|
12
ywm8812 2016-11-24 10:56:02 +08:00
`&([^&]*)`
|
13
DiamondbacK 2016-11-24 11:07:37 +08:00
虽然问题表述不完美,但是所给出的想要的输出结果已经足以说明楼主的意图了。认真看主帖的话,对题意应该不会有什么不明白。
|
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/ |