![](/img/trans.png)
[英]Replace or Strip a specific character between two characters in javascript using regex
[英]Regex expression to replace characters between two options
我正在尝试创建一个优雅的正则表达式来替换以下字符串:
12:00:00 am
到此: 12:00 AM
: 12:00 AM
或也替换: 12:00 am
: 12:00 am
: 12:00:23 am
至12:00 am
我的意思是,我想删除最后的: :00
和替换am
由AM
这是我的想法(但不见了):
"12:00:00 a. m.".replace(/(:*)?(.*\s)/, "");
非常感谢您的帮助:)
您可以将此正则表达式与两个捕获组一起使用,以一次replace
完成它:
/:\\d\\d\\s*(\\w)\\.?\\s*(\\w)\\.?/
const func = str => str.replace(/:\\d\\d\\s*(\\w)\\.?\\s*(\\w)\\.?/, (a, b, c) => { return ` ${b}${c}`.toUpperCase(); }); console.log(func('12:12:34 am')); console.log(func('12:34:56 am')); console.log(func('12:12:34 pm')); console.log(func('12:34:56pm')); console.log(func('12:34:56p. m'));
这在某种程度上取决于您想要成为什么样的人,但这似乎可行:
function replaceTime(str) { return str.replace(/(\\d{2}:\\d{2}):\\d{2}/, "$1") .replace(/\\s*a\\.*\\s*m\\.*/, " AM"); } console.log(replaceTime("12:00:00 am")); console.log(replaceTime("12:00:23 am"));
我假设您在这里没有做任何验证工作。 这样,两个链接的raplece()
方法将完成此工作:
str.replace(/^(.*):\d+/, '$1')
.replace(/([a-z])[. ]*/g, ($0, $1) => $1.toUpperCase())
以上作品适用于pm
或pm
。
ES5:
console.log("12:00:00 am".replace(/^(.*):\\d+/, '$1') .replace(/([az])[. ]*/g, function($0, $1) { return $1.toUpperCase(); }))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.