2016-07-09 22 views
1

私は桁数に一致する正規表現を書いています。文字列全体で少なくとも6桁の数字を持つことができ、スペースとダッシュを付けることができます。正規表現の桁数

123-45 6 valid 
123456 valid 
123-56 Invalid 

最初に、文字列に6文字以上の文字列を書き込んだ正規表現を書きました。それはダッシュとスペースを数えたとしてしかし、それは6

[\d\s-]{6,} 

の一部として動作しませんでしたでも、この1つは動作していない

[\d]{6,}[\s-] 

をしようとしました。これを修正する方法を提案できますか?

別の試み:

[[\d]{6,}[\s]*[-]*] 
+3

'(?:\ d [\ s \ - ] *){6}' – Siguza

+0

一致する前に文字列を前処理できますか?問題は、 '{6、}は6桁ではなく6桁であるので、最後の文字は6桁(ダッシュ)で一致し、先頭の文字は6桁ではなく'123-45 'のため一致します。 –

+0

@Siguzaその作品!説明することはできますか? – CodeMonkey

答えて

1

String.replaceString.match機能使用溶液:

を3210
var isValid = function(str){ 
    var match = str.replace(/[\s-]/g, "").match(/^\d{6,}$/); 
    return Boolean(match); 
}; 

console.log(isValid("123-45 6")); // true 
console.log(isValid("12345678")); // true 
console.log(isValid("123-56")); // false 
console.log(isValid("123-567<")); // false 
4

あなたが/(?:\d\D*){6,}/を使用することができ、少なくとも6桁の有無を確認するには。 あなただけのスペースとダッシュできるようにしたい場合は、/^[ -]*(?:\d[ -]*){6,}$/

0

にパターンを調整することができますあなたはそれを行うことができますこのいずれか(末尾にスペースとダッシュを受け入れる)のような:

(\d[\s-]*){6,} 

などこの(数字の間だけダッシュとスペース):

(\d[\s-]*){5,}\d