如何替换javascript字符串中的前三个连字符?

如何替换javascript字符串中的前三个连字符?,javascript,regex,Javascript,Regex,改变 12-16-23-some-words-now 到 12/16/23/现在说几句话 谢谢!!非常感谢你的帮助 如果前三个破折号之间的字符始终是数字,您可以这样做: variable = variable.replace(/^(\d+)-(\d+)-(\d+)-/, "$1/$2/$3/"); variable = variable.replace(/^([^-]+)-([^-]+)-([^-]+)-/, "$1/$2/$3/"); var string = "12-16-23-some

改变

12-16-23-some-words-now

12/16/23/现在说几句话


谢谢!!非常感谢你的帮助

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

variable = variable.replace(/^(\d+)-(\d+)-(\d+)-/, "$1/$2/$3/");
variable = variable.replace(/^([^-]+)-([^-]+)-([^-]+)-/, "$1/$2/$3/");
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);
如果它们可以是任意字符,则可以这样做:

variable = variable.replace(/^(\d+)-(\d+)-(\d+)-/, "$1/$2/$3/");
variable = variable.replace(/^([^-]+)-([^-]+)-([^-]+)-/, "$1/$2/$3/");
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);

工作演示:

这应该可以做到:

'12-16-23-some-words-now'.replace(/^(\d+)-(\d+)-(\d+)-/g, '$1/$2/$3/');
前三个总是数字吗

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

查找:

^([^-]*)-([^-]*)-([^-]*)-(.*)
替换:

$1/$2/$3/$4

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

variable = variable.replace(/^(\d+)-(\d+)-(\d+)-/, "$1/$2/$3/");
variable = variable.replace(/^([^-]+)-([^-]+)-([^-]+)-/, "$1/$2/$3/");
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);

啊,@jfriend00在我回答的时候编辑了他的回答。但是,His不一定会取代前三个,因为他缺少
^
操作符。是的。我生成这些字符串的一个目的是它们不能有反斜杠,然后使用它们指向一个页面,这要求日期(前三个数字)在反斜杠内。+1表示注意实际上应该替换三个破折号,-1因为没有注意到第三个破折号后面没有数字:)这一个得到了我的选票。(
[^-]*
*?
更精确、更快)。说你的意思-说你的意思+1.