【问题标题】:JavaScript: Add space between Char and Number with RegexJavaScript:使用正则表达式在字符和数字之间添加空格
【发布时间】:2019-10-16 22:40:38
【问题描述】:

您好,我有一个车牌号 BZ8345LK,想转换为 BZ 8345 LK(在字符和数字之间添加空格)。

我尝试了这个正则表达式但没有工作,只有空格第一个字符和数字。例如BZ 8345LK,'LK' 不带空格。

var str = 'BZ8345LK';
str.replace(/[^0-9](?=[0-9])/g, '$& ');
# return BZ 8345LK, I want BZ 8345 LK

【问题讨论】:

标签: javascript regex


【解决方案1】:

您应该替换另一种可能性,即一个数字后跟一个非数字:

var str = 'BZ8345LK';
console.log(str.replace(/[^0-9](?=[0-9])|[0-9](?=[^0-9])/g, '$& '));

【讨论】:

  • 如果在文本输入中使用 onChange 此代码为每个字符和数字添加更多额外空间。
【解决方案2】:

你可以使用这个正则表达式

[a-z](?=\d)|\d(?=[a-z])
  • [a-z](?=\d) - 匹配任何字母后跟数字
  • | - 交替与逻辑 OR 相同
  • \d(?=[a-z]) - 任意数字后跟字母

let str = 'BZ8345LK'

let op = str.replace(/[a-z](?=\d)|\d(?=[a-z])/gi, '$& ')

console.log(op)

【讨论】:

  • 这是动态文本输入的最佳选择,例如 on change。
  • 你能强制删除号码BZ 83 45 LKBZ 8345 LK中的多余空格
  • 如果数字格式BZ83 45LK,如何保持输出BZ 8345 LK
  • @Puyup 首先strip out the spaces 然后使用答案。
  • @Puyup 你可以简单地删除所有空间str.replace(/\s+/g,'')
【解决方案3】:

另一种选择是使用:

^[^\d]+|[\d]{4}

搜索任何非数字字符 [^\d] 后跟 4 个数字 [\d]{4} 字符

const str = 'BZ8345LK'
let answer = str.replace(/^[^\d]+|[\d]{4}/gi, '$& ')
console.log(answer)

【讨论】:

    【解决方案4】:

    试试这个

    var str = "BZ8345LK";
    var result = str.replace(/([A-Z]+)(\d+)([A-Z]+)/, "$1 $2 $3");
    console.log(result);

    【讨论】:

      猜你喜欢
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 2018-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多