2017-09-02 9 views
0

文字列の形式が異なります。文字列が何かの文字列を生成する場合、ユーザーはその特定の文字列の形式をキー入力する必要があります。文字列形式の検証

与えられた文字列が

(アルファベット1文字、2つの数、ダッシュで続くダッシュ、二つの数字、および1つのアルファベットで続く)

A-01-13Aしている場合

又は

A-01-13

は(一個のアルファベット、ダッシュ2つの数値を、次のダッシュ、二つの数字によって従う)


ユーザのキー入力文字列は以下が検証され:

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 *は真または偽を返すので意味があります。 – 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})$ 

これは以下を意味します。 ダッシュ、2つの数字、ダッシュ、2つの数字、1つの文字または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); 
 
}