我正在寻找一种使用JavaScript正则表达式从字符串中删除第四个空格的方法。
例如: "Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)" 转换为 "Wed Sep 19 2012"
例如: "Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)" 转换为 "Wed Sep 19 2012"
var s = "Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)";
s.split(' ').slice(0, 4).join(' ');
步骤:
> s.split(' ')
["Wed", "Sep", "19", "2012", "08:05:07", "GMT-0700", "(PDT)"]
> s.split(' ').slice(0, 4)
["Wed", "Sep", "19", "2012"]
> s.split(' ').slice(0, 4).join(' ')
"Wed Sep 19 2012"
或者删除slice
并使用split()
的limit
参数:
var s = "Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)";
var newValue = s.split(' ', 4).join(' ');
s.split(" ", 4).join(" ");
- I Hate Lazy你真的需要正则表达式吗?这是一个非常标准化的日期字符串... 3个字符的星期几,3个字符的月份,2个字符的日期,4个字符的年份...唯一的问题是日期数字是否用零填充。
str.substring(0,15);
虽然正则表达式不是最好的选择,但你可以这样做:
var string = "Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)";
var regex = /^((\S+\s*?){4})(\s+.*)$/;
var stripped = string.replace(regex, "$1");
这个正则表达式匹配了4个非空格字符后跟一个空格,然后一直到行尾的任何字符。替换使用第一个匹配并忽略其余的。
第一个组内的\s
是懒惰匹配的,因此结尾的空格会自动被去除。不幸的是,这使得正则表达式变慢了,但在典型输入上不会有明显的影响。
然而,如果您确实要解析ISO标准日期字符串,则Paddy是正确的,您应该将其截断。您也可以像Joao建议的那样进行更常规的处理。
请记住,正则表达式可能并不是您大多数时候想要的工具。它们实际上是相当粗糙的工具...
我觉得最好使用正则表达式搜索模式,并从那个点截断字符串。
var str = "Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)";
var regEx = new RegExp("\\s\\d+\\:"); // pattern match for ' dd:'
var truncatedStr = str.substring(0, str.search(regEx));
text = text.replace(/^((?:[^ ]* ){3}[^ ]*) [\S\s]*/, "$1");