私はまだRegexの新機能で、基本的には数字と文字を受け入れるルールを作成しますが、連続する文字は入力できません。例えば正規表現を拒否する連続した文字
:ABCD - > [OK]を、abbcd - >悪い
私は仕事にそれのほとんどを持っていますが、私は把握カントの部分は、私は連続した文字を禁止します正確にどのようにでしょうか?
マイコードこれまで:
/^[A-Za-z-0-9]{8,15}$/i
私はまだRegexの新機能で、基本的には数字と文字を受け入れるルールを作成しますが、連続する文字は入力できません。例えば正規表現を拒否する連続した文字
:ABCD - > [OK]を、abbcd - >悪い
私は仕事にそれのほとんどを持っていますが、私は把握カントの部分は、私は連続した文字を禁止します正確にどのようにでしょうか?
マイコードこれまで:
/^[A-Za-z-0-9]{8,15}$/i
>>> r = /^((\w)(?!\2))+$/i
>>> r.exec('abbcd')
null
>>> r.exec('abcd')
[ 'abcd',
'd',
'd',
index: 0,
input: 'abcd' ]
\2
一部はグループ(\w)
で最後にマッチした方の文字、バックリファレンスと一致しています。だから、否定的な先読み(?!\2)
は、 "文字自体に従っていない"という意味です。私がここで使用した用語の中にあなたには馴染みのないものがある場合は、MDN's Regular Expression Documentationで検索してください。 、OPのように8-15文字まで受け入れられた文字列の長さを制限{8,15}
に+
を変更するには
:
>>> r = /^((\w)(?!\2)){8,15}$/i
>>> r.exec('abcd')
null
>>> r.exec('abcdabcd')
[ 'abcdabcd',
'd',
'd',
index: 0,
input: 'abcdabcd' ]
最初に私は、zと0の間にマイナス記号はアンダーライン、それはそうだ場合だと思いますあなたは '[A-Za-z_0-9]'の代わりに '[\ w]'を使うのが好ましいでしょう。 – shift66