簡體   English   中英

如何過濾英國郵政編碼

[英]How to filter UK postcodes

我正在嘗試將英國郵政編碼的第一部分與我在JSON文件中保存的部分相匹配。 我在Vue做這個。

目前我設法匹配郵政編碼,如果它有2個匹配的字母,但是一些英國郵政編碼不以2個字母開頭,有些只有一個,這就是它失敗的地方。

請參閱此處獲取完整代碼https://codesandbox.io/s/48ywww0zk4

JSON示例

{
  "id": 1,
  "postcode": "AL",
  "name": "St. Albans",
  "zone": 3
},
{
  "id": 2,
  "postcode": "B",
  "name": "Birmingham",
  "zone": 2
},
{
  "id": 3,
  "postcode": "BA",
  "name": "Bath",
  "zone": 5
}
let postcodeZones = this.postcodeDetails.filter(
  pc => pc.postcode
          .toLowerCase()
          .slice(0, 2)
          .indexOf(this.selectPostcode.toLowerCase().slice(0, 2)) > -1
);

任何人都可以幫我找到(例如)'B',如果我鍵入B94 5RD&'BA',如果我鍵入BA33HT?

您可以使用與字符串開頭的字母相匹配的正則表達式。

 function getLettersBeforeNumbers( postcode ) { return postcode.match( /^[a-zA-Z]*/ )[0]; } let a = getLettersBeforeNumbers( 'B94 5RD' ); let b = getLettersBeforeNumbers( 'bA33HT' ); let c = getLettersBeforeNumbers( '33bA33HT' ); console.log( a, b, c ); /** EXPLANATION OF THE REGEXP / ^[a-zA-Z]* / ^ = anchor that signifies the start of the string [ ... ] = select characters that are equal to ... az = all characters in the alphabet AZ = all capatilised characters in the alphabet * = zero or more occurances **/ 

PS:你可以使用.match( /^[a-zA-Z]*/ )[0]; 在你的字符串上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM