javascript - 在正则表达式中查找某些数字(时间格式)之前的空格

标签 javascript node.js regex

我有一个字符串,我想要一个正则表达式来查找数字前面是否有空格,如果有,则在前面添加一个空格。 例如:“出租车仅限周四、周五和周六 11:30PM-3:00AM” 结果:“出租车仅限周四、周五、周六 11:30 PM-3:00 AM”

最佳答案

我不是正则表达式专家,但最终得到了这两种变体:

  1. 第一个变体使用回调函数作为 replace 方法的第二个参数:

var str = 'TAXI CABS ONLY THURS-FRI-SAT 11:30PM-3:00AM';
var strUpdated = str.replace(/\d?\d:\d?\d(AM|PM)/g, function(m){
  return m.replace(/(AM|PM)/g, " $1");
});
console.log('old: ' + str);
console.log('new: ' + strUpdated);

  • 使用表达式作为 replace 方法的第二个参数的第二个变体:
  • var str = 'TAXI CABS ONLY THURS-FRI-SAT 11:30PM-3:00AM';
    var strUpdated = str.replace(/(\d?\d:\d?\d)(AM|PM)/g, "$1 $2");
    console.log('old: ' + str);
    console.log('new: ' + strUpdated);
    console.log('----------------------------------');
    var str = 'Another test 1:22 AM. This 12:05PM and this 12:50PN ';
    var strUpdated = str.replace(/(\d?\d:\d?\d)(AM|PM)/g, "$1 $2");
    console.log('old: ' + str);
    console.log('new: ' + strUpdated);

    现在我将尝试解释正则表达式的作用:)

    • (\d?\d:\d?\d) - 这将匹配 1:1、11:22、1:22、11:2 等数字,刹车用于创建一个组,以便稍后可以在替换正则表达式中使用它(替换方法的第二个参数)
    • (AM|PM) - 这是另一个组(我们在放置括号时创建的)以匹配文字 AM 或 PM

    编辑(响应 comment )

    我可以快速建议的是在另一个正则表达式中处理诸如 11AM-6PM OR 8A-6P 的情况,而不是使当前的情况复杂化。看一下下面的代码 - 第二个 replace 正在完成这项工作:

    var str = 'TAXI CABS ONLY THURS-FRI-SAT 11:30PM-3:00AM \r\n     11AM-6PM OR 8A-6P 11M-6M OR 12A-15P';
    var strUpdated = str.replace(/(\d?\d:\d?\d)(AM|PM)/g, "$1 $2").replace(/(\d?\d)(AM|PM|A|P)/g, "$1 $2");
    console.log('old: ' + str);
    console.log('new: ' + strUpdated);

    关于javascript - 在正则表达式中查找某些数字(时间格式)之前的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46178819/

    相关文章:

    正则表达式匹配特定的数字格式

    javascript - regex/instr javascript函数来检查url

    javascript - 如何替换此 JavaScript 语句中的所有字符串值?

    javascript - 动态验证和格式化邮政编码

    javascript - 与 Ajax 的深度链接不适用于最新的 - jquery 地址

    css - ejs 不包括 css

    javascript - 从Mongo查询返回的数据的错误处理

    javascript - 如何使用javascript正则表达式,从html中获取第一个词和最后一个词

    javascript - 在 ajax 事件后使用 geocomplete 函数

    jquery - 无法从 jQuery 发布到 Nodejs 端点