0

件名が示すように、英数字を受け入れますがアンダースコア文字を受け入れず、ピリオドも受け入れますが、先頭または末尾は受け入れない、X 文字の長さの JavaScript 正規表現が必要です。ピリオドも連続することはできません。

Stack Overflow で他の人の質問と回答を検索して読みたい場所 (たとえば、ここ) にほぼたどり着くことができました。

ただし、私の場合、正確に X 文字の長さ (6 など) である必要があり、文字と数字 (大文字と小文字を区別しない) を含めることができ、ピリオドも含めることができる文字列が必要です。

これらのピリオドは連続することはできません。また、文字列を開始または終了することもできません。

Jd.1.4は有効ですが、そうでJdf1.4fはありません (7 文字)。

/^(?:[a-z\d]+(?:\.(?!$))?)+$/i 

他の例を使用して構築できたものですが、設定された長さに一致する文字列のみを受け入れるようにすることはできません。

/^((?:[a-z\d]+(?:\.(?!$))?)+){6}$/i

6 文字以上を受け入れるようになったという点で機能しますが、それより長い文字も喜んで受け入れます...

明らかに何かが足りないのですが、それが何かわかりません。

誰でも助けることができますか?

4

2 に答える 2

4

これはうまくいくはずです:

/^(?!.*?\.\.)[a-z\d][a-z\d.]{4}[a-z\d]$/i

説明:

^             // matches the beginning of the string
(?!.*?\.\.)   // negative lookahead, only matches if there are no
              // consecutive periods (.)
[a-z\d]       // matches a-z and any digit
[a-z\d.]{4}   // matches 4 consecutive characters or digits or periods
[a-z\d]       // matches a-z and any digit
$             // matches the end of the string
于 2013-05-09T19:04:43.330 に答える
2

それを行う別の方法:

/(?=.{6}$)^[a-z\d]+(?:\.[a-z\d]+)*$/i

説明:

      (?=.{6}$)   this lookahead impose the number of characters before 
                  the end of the string
      ^[a-z\d]+   1 or more alphanumeric characters at the beginning
                  of the string
(?:\.[a-z\d]+)*   0 or more groups containing a dot followed by 1 or 
                  more alphanumerics
              $   end of the string
于 2013-05-09T19:33:57.723 に答える