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

时间:2016-12-19 05:27:12

标签: javascript angularjs

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

  

A12 3AD
  A123 3AD
  A2 2AD

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

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

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

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

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

5 个答案:

答案 0 :(得分:7)

使用String#replace方法并将前3个字符替换为前导空格或使用positive look-ahead assertion断言位置,并替换为空格。

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



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}$)/, ' ')
)




或者您可以将String#splitArray#join方法与positive look-ahead assertion正则表达式一起使用。

string = string.split(/(?=.{3}$)/).join(' ');



console.log(
  'A123A123'.split(/(?=.{3}$)/).join(' ')
)




答案 1 :(得分:2)

您可以使用正则表达式功能执行操作。

string = string.replace(/.{3}$/,' $&');

它指定:从最后开始,空格将被赋予第3个最后一个值

之前

答案 2 :(得分:1)

而不是更改输入文本,而不提供所需输入的通知;通过title placeholder使用required:invalidcss属性和pattern伪类,向用户提供对该字段的要求通知{{1} }属性设置为RegExp ^[A-Za-z0-9]{2,4}\s[A-Za-z0-9]{3}$

input[type="text"] {
  width: 200px;
}

input:invalid {
  color:red;
  font-weight: bold;
}
<input type="text" 
       title="Input three alphanumeric characters, a space, followed by three alphanumeric characters. All other input is invalid."
       placeholder="Input valid UK postal code."
       pattern="^[A-Za-z0-9]{2,4}\s[A-Za-z0-9]{3}$"
       required/>

答案 3 :(得分:1)

希望这会有用

使用splice方法将字符串分成两部分。 string.length-3将给出最后三个字符,其中string.slice(0, string.length-3)将从字符串的开头返回第一个n-3字符。使用array.join方法加入各个部分

function insertSpace(string){
var output = [string.slice(0, string.length-3),' ', string.slice(string.length-3)].join('');
return output
}
console.log(insertSpace('A1233AD'))

DEMO

答案 4 :(得分:-1)

您还可以使用子字符串函数:

str.substring(0,str.length - 3)+“”+ str.substring(str.length,str.length - 3)