2017-05-10 10 views
0

私のコードで文字列を制限するには正規表現が必要です。 以下は文字列の基準です。文字を制限する正規表現

  1. 英数字と。 (ドット)と - (ハイフン)を使用できます。
  2. で始まらないでください。または - 数字または文字で始める必要があります。
  3. 文字列全体に1つのハイフンしか使用できません。
  4. 複数のドットを使用できます。しかし、連続したドットは許さないでください。 (例:DDDが許可されている。しかしD ...
  5. が連続許可されていない - とも許可されていません(例:。。D-が許可されていません)

    /^([a-zA-Z\d]+[\.]?[a-zA-Z\d]{0,1})[\-]?([a-zA-Z\d]+[\.][a-zA-Z\d]{0,1})+$/ 
    
  6. を。。。

私は、上記の式を書かれている。しかし、それは第五ポイントに違反することができます - 。。。ドットの後

答えて

3

2. ^[a-zA-Z\d](許可され、最初の文字)
1. ... [-.a-zA-Z\d]*$(許可され、他の文字)
3. (?!.*-.*-) ...(..を禁止)(許可されない2つのハイフン)
4. (?!.*\.\.) ...
5. (?!.*-\.|\.-) ...(.--.を禁止)

すべて一緒になりました(一緒にリファクタリング否定先読み付き):100K上

^(?!.*(?:-(?:.*-|\.)|\.[.-]))[a-zA-Z\d][-.a-zA-Z\d]*$ 
+0

おめでとう! – Tushar

+1

@Tushar:ありがとう!盗品を持って! \ o/ – Amadan

+0

は、有効な文字列として1文字を許可していません... OPの要件の一部であるかどうかは分かりません。 –

関連する問題