2012-08-31 69 views

回答

3

如果前三个破折号之间的字符总是数字,你可以做这样的:

variable = variable.replace(/^(\d+)-(\d+)-(\d+)-/, "$1/$2/$3/"); 

如果他们可以任意字符,那么你可以做这样的:

variable = variable.replace(/^([^-]+)-([^-]+)-([^-]+)-/, "$1/$2/$3/"); 

工作演示:http://jsfiddle.net/jfriend00/YySFh/

+0

谢谢,这是最容易理解的评论! – egucciar

2

这应该做的伎俩:

'12-16-23-some-words-now'.replace(/^(\d+)-(\d+)-(\d+)-/g, '$1/$2/$3/'); 

前三位始终是数字吗?

+0

啊,@ jfriend00就在我回答时编辑了他的答案。他不一定会取代前三名,因为他缺少'^'操作符。 – callumacrae

+0

是的。我生成这些字符串的目的不是反斜杠,而是使用它们指向页面,这要求日期(前三个数字)在反斜杠内。 – egucciar

+1

+1注意到它实际上应该被替换为三个破折号-1,因为没有注意到第三个破折号后面没有数字:) –

2
foo = foo.replace(/^(.*?)-(.*?)-(.*?)-(.*)$/, "$1/$2/$3/$4"); 

JSFiddle

1

查找:

^([^-]*)-([^-]*)-([^-]*)-(.*) 

替换:

$1/$2/$3/$4 
+0

这一个得到我的投票。 ('[^ - ] *'比'。*?'更精确更快)。说出你的意思 - 表达你的意思! +1 – ridgerunner

+0

@ridgerunner谢谢。 – mmdemirbas

0

这确切结构可以固定这样的:

var string = "12-16-23-some-words-now"; 
var hyphensFormatted = string.substr(0, 9).replace(/-/g, "/"); 
var formattedString = hyphensFormatted + string.substr(9, string.length); 
console.log(formattedString);