正则表达式捕获字符并替换为另一个

Regex Capture Character and Replace with another

正在尝试用 dot 替换数字前面的 special characters

const time = "17:34:12:p. m.";

const output = time.replace(/\d+(.)/g, '.');
// Expected Output "17.34.12.p. m."
console.log(output);

我已经编写了正则表达式,它将捕获任何以 digit/s 开头的字符。输出也用替换替换数字。有人可以帮我解决这个问题吗?

您可以使用

const time = "17:34:12:p. m.";
const output = time.replace(/(\d)[\W_]/g, '.');
console.log(output);

time.replace(/(\d)[\W_]/g, '.') 代码将匹配并将数字捕获到组 1 中并匹配任何非单词或下划线字符,. 替换将放回数字并替换 :..

如果您想从 [\W_] 中“减去”空白模式,请使用 (?:[^\w\s]|_)

考虑检查 中的更多特殊字符模式。

您应该查找非单词 (\w) 和非空格 (\s) 字符并将它们替换为点。

您应该为正则表达式使用一些实时模拟器。例如 regex101: https://regex101.com/r/xIStHH/1

const time = "17:34:12:p. m.";

const output = time.replace(/[^\w\s]/g, '.');
// Expected Output "17.34.12.p. m."
console.log(output);