在字符串结尾的第3个字符之前添加空格

vai*_*hav 4 javascript angularjs

我正在使用Angular JS,我正在为英国邮政编码进行验证.问题是有一个特定的要求,即英国邮政编码中应该有一个空格,只能通过计算最后一个字符来识别.因为在第三个最后一个字符之前应该有一个空格它应该是这样的:

A12 3AD
A123 3AD
A2 2AD

为此,我有两个主要问题:

  1. 如何操纵输入值来诱导空间.

  2. 如何实际更改字符串以添加空间

我是新手,javascript/angular有人可以告诉我该怎么做吗?

PS:我没有在项目中使用jQuery.

Pra*_*lan 7

使用String#replace方法并将前3个字符替换为前导空格或使用正向前瞻断言断言位置并替换为空格.

string = string.replace(/.{3}$/,' $&');
// or using positive look ahead assertion
string = string.replace(/(?=.{3}$)/,' ');
Run Code Online (Sandbox Code Playgroud)

console.log(
  'A123A123'.replace(/.{3}$/, ' $&'), '\n',
  'A13A123'.replace(/.{3}$/, ' $&'), '\n',
  'A1A123'.replace(/.{3}$/, ' $&'), '\n',
  'AA123'.replace(/.{3}$/, ' $&'), '\n',
  'A123'.replace(/.{3}$/, ' $&'), '\n',
  'A123'.replace(/(?=.{3}$)/, ' ')
)
Run Code Online (Sandbox Code Playgroud)


或者你可以使用String#splitArray#join方法与积极的前瞻断言正则表达式.

string = string.split(/(?=.{3}$)/).join(' ');
Run Code Online (Sandbox Code Playgroud)

console.log(
  'A123A123'.split(/(?=.{3}$)/).join(' ')
)
Run Code Online (Sandbox Code Playgroud)