5

私はまだ正規表現に非常に慣れていないため、基本的に必要なことは、数字と文字を受け入れるルールを作成することですが、連続した文字を入力することはできません。

例: abcd --> OK、abbcd --> 悪い

私はそれのほとんどを機能させていますが、理解できない部分は、連続した文字を正確に禁止するにはどうすればよいですか?

これまでの私のコード:

/^[A-Za-z-0-9]{8,15}$/i
4

1 に答える 1

4
>>> r = /^((\w)(?!\2))+$/i
>>> r.exec('abbcd')
null
>>> r.exec('abcd')
[ 'abcd',
  'd',
  'd',
  index: 0,
  input: 'abcd' ]

パーツは\2バックリファレンスであり、グループが最後に一致した文字と一致し(\w)ます。したがって、ネガティブ先読み(?!\2)は「キャラクター自体が続かない」ことを意味します。ここで使用した用語がよくわからない場合は、MDNの正規表現ドキュメントで調べてください。

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' ]
于 2012-04-25T08:05:33.457 に答える