我正在尝试拆分句子并在第一个单词之后获取字符串。
我目前的尝试:
var datetime = "28 Dec2.55pm";
datetime.split(/[0-9]+/);
console.log(datetime);
// This returns back all the words and no numbers.
预期结果:
// Ethier
28 Dec 2.55pm
// Or
[0] => 28 Dec
[1] => 2.55pm
我想对此有一些指导,你不必只给出一些完整的答案。
答案 0 :(得分:7)
而不是split
,我使用match
:
var datetime = "28 Dec2.55pm";
var d = datetime.match(/^(\d+\s[a-z]+)(.+)$/i);
console.log(d);

<强>解释强>
/ : regex delimiter
^ : begining of string
( : start group 1
\d+ : 1 or more digits
\s : a space
[a-z]+ : 1 or more letter
) : end group 1
( : start group 2
.+ : 1 or more any characters
) : end group 2
$ : end of string
/i : regex delimiter, case insensitive
答案 1 :(得分:3)
var datetime = '28 Dec2.55pm';
// Split datetime on spaces
var split = datetime.split(' ');
var parsed = [
split[0], // First element is the day
split[1].substr(0, 3), // First three characters of second element represent name of the month
split[1].substr(3, split[1].length - 3) // All characters in second element from index 3 onward present the time
];
console.log(parsed);
&#13;
此代码假定月份名称的长度始终为3个字符。
那些寻求更清洁解决方案的人我建议 @Toto 的答案。
答案 2 :(得分:0)
如果你坚持使用正则表达式,这可能是有用的。它不是一个完美的剪裁合身,但它足够接近,有一些假设:
var myRe = /(\d{1,2}\s\w{3})(\d{1,2}\.\d{1,2}\w{2})/g;
var myArray = myRe.exec('28 Dec2.55pm');
console.log(myArray);
它假设:
它会快速提供你所需要的东西,但是如果你的时间不对,数据错误,下午可能是GG或其他任何东西等,它就没有失败。
答案 3 :(得分:-1)
也许是愚蠢的回答,但我认为你总是有相同的结构,对吧?这意味着&#34;日空间三个字母月份的非空间确切时间&#34;。
月份是3个字母,天数写成01,总有空间你可以简单地将它划分为第7个字符
如果上述情况属实,只有天数写为&#34; 1&#34;而不是&#34; 01&#34;,最简单的方法是查看第二个字符 - 如果是数字,则除以第7位,如果它是第6位的空格分割。