2017-09-02 118 views
0

我有一個字符串不同格式的列表。當一個字符串產生一串東西時,用戶必須鍵入該特定字符串的格式。驗證字符串格式

如果給定的字符串是

A-01-13A

(一個字母,由破折號跟隨,兩個數字,由破折號,兩個數字和一個字母遵循)

A-01-13

(一個字母,通過劃線跟隨,兩個數字,由破折號跟隨,兩個數字)


用戶的鍵入字符串下面驗證

B-13 -99

B-14-11A

使用的r鍵,在字符串不低於驗證

B-13-100


什麼是驗證在Javascript使用正則表達式或其他方法給定字符串的最好方法?

+0

您是否嘗試過任何正則表達式? –

+0

沒有。我是新來的正則表達式。 –

+0

@AbelChun:你解決了你的問題嗎? – Nevertheless

回答

2

只需使用簡單的正則表達式:

const userKeyRegExp = /^[A-Z]\-[0-9]{2}\-[0-9]{2}[A-Z]?$/; 

const valid = userKeyRegExp.test('A-01-13A'); 

console.log(valid); 
+1

當使用正則表達式來驗證字符串時,* test *更具語義性,因爲它返回true或false。 – RobG

+0

同意,更新,謝謝。 – Nevertheless

0

你可以做到這一點通過以下方式

function validate(str){ 
 
    return str.match(/^[A-Z]-\d{2}-\d{2}[A-Z]?$/) !== null; 
 
} 
 

 

 
console.log(validate('A-01-13A')); 
 
console.log(validate('A-01-13')); 
 
console.log(validate('B-13-99')); 
 
console.log(validate('B-14-11A')); 
 
console.log(validate('B-13-100'));

1

你正在尋找的正則表達式的表達式爲:

^([a-zA-Z]{1}-[0-9]{2}-[0-9]{2}[a-zA-Z]{0,1})$ 

這意味着: 從一個字符開始,後跟一個破折號,後跟兩個數字,後跟一個破折號,後跟兩個數字,以一個或一個字符結尾。

您可以Regex101用它玩,或者你可以在Javascript利用如下:

/** @const {!RegExp} Code pattern to validate. */ 
 
const CODE_PATTERN = /^([a-zA-Z]{1}-[0-9]{2}-[0-9]{2}[a-zA-Z]{0,1})$/; 
 

 

 
/** 
 
* Validate that a certain code matches expected RegExp. 
 
* Uses CODE_PATTERN to validate. 
 
* @param {string} code - Code to be validated. 
 
* @return {bool} Whether provided code matches pattern. 
 
*/ 
 
const validateCode = function(code) { 
 
    return CODE_PATTERN.test(code); 
 
}; 
 

 

 

 
// Test sample of codes. 
 
const testCodes = [ 
 
    'A-01-13A', 
 
    'A-01-13', 
 
    'B-13-99', 
 
    'B-14-11A', 
 
    'B-13-100' 
 
]; 
 
for (code of testCodes) { 
 
    const isValidCode = validateCode(code); 
 
    console.log(isValidCode); 
 
}