2016-10-16 7 views
0

私は文字列が少なくとも6文字を持っているかどうかをテストする正規表現をいくつか持っています。空の文字列があれば真であることも欲しいですが。regexを使用して空の文字列または6文字以上の文字列を許可するにはどうすればよいですか?

正規表現:

let regexToTestName = /^[[email protected]#$%^&*()_-]{6,}$/g; 
let usedName = ''; //or let usedName = 'atLeast6Char'; 
let isNameMatch = regexToTestName.test(usedName); 

あなたはそれが長さが少なくとも6で指定した文字のために働くだろう見ることができるように。しかし、空の文字列であれば、どうすれば真の価値を得ることができますか?

答えて

2

だけ?であなたの文字列をオプションに:更新の過程で

/^(\S{6,})?$/ 

var re = /^(\S{6,})?$/ 
 

 
console.log('', re.test('')); 
 
console.log('a', re.test('a')); 
 
console.log('abcde', re.test('abcde')); 
 
console.log('abcdefg', re.test('abcdefg'));

0

パイプ|を使用し、両方を行うためにグループ化します。唯一の「から」インデックスで範囲を指定して、それが6以上{6,}にマッチしますそれらの{0}(空の文字列)または|があるかどう

^([/w]{6,0})|([\w]{0,0})$ 
1

次の式では、任意の文字.のために文字列全体^ $にマッチします、カンマ、および「〜」インデックスなし。 "or"式はグループ()にラップする必要があります。

var re = /^(.{0}|.{6,})$/; 
 

 
console.log('', re.test('')); 
 
console.log('1', re.test('1')); 
 
console.log('12', re.test('12')); 
 
console.log('123', re.test('123')); 
 
console.log('1234', re.test('1234')); 
 
console.log('12345', re.test('12345')); 
 
console.log('123456', re.test('123456')); 
 
console.log('1234567', re.test('1234567')); 
 
console.log('12345678', re.test('12345678'));

+0

を。 – Soviut

関連する問題