2017-08-08 78 views
0

我想對輸入字段「城市或郵政編碼」進行客戶端驗證,我爲用戶輸入單獨驗證。我首先區分輸入是數字還是字符串,然後有單獨的塊來驗證它們。我想知道是否有一種優雅的方式或者換句話說,一個正則表達式來驗證輸入用於驗證郵政編碼或城市的JavaScript正則表達式

validateCityOrPostalCode(value) { 
    const isnum = /^\d+$/.test(value); 
    if (isnum) { 
     const patternForZipCode = RegExp('^[0-9]{5}$'); 
     const result = patternForZipCode.test(value); 
     return result; 
    } 
    const onlyLetters = RegExp('^[a-zA-Z ]$').test(value); 
    if (onlyLetters) { 
     const patternForCity = RegExp('^([a-zA-Z -]{1,50})$'); 
     const validCityName = patternForCity.test(value); 
     return validCityName; 
    } 
    } 

我打算做

validateCityOrPostalCode(value) { 
const patternForCityOrPostalCode = '<The regex that I am looking for >' 
const result = patternForCityOrPostalCode.test(value); 
return result; 
} 

有效的情況下,是什麼: 5位郵政編碼像10016,12345,44444等(5位準確) 城市,如 '紐約', '波士頓', '芝加哥',XX,XXXX等(1至50個字符)

無效的情況下:空字符串 Boston33 333Chicago

回答

1

你可以在你的正則表達式,它就像一個或使用管道。

例片段:

function validateCityOrPostalCode(value) { 
 
    return /^([0-9]{5}|[a-zA-Z][a-zA-Z ]{0,49})$/.test(value); 
 
} 
 

 
var values = ['12345','New York','1234','','  ','Boston33','333Chicago']; 
 

 
values.forEach(
 
    function(value) { 
 
    console.log(value +":"+ validateCityOrPostalCode(value)); 
 
});