4

英数字とピリオドを許可したい。ただし、句に2つ以上のピリオドを連続して含めることはできず、ピリオドで開始または終了することはできません。また、スペースは使用できません。

PHPとJavascriptの両方を使用しています。

これまでのところ、私は持っています/^(?!.*\.{2})[a-zA-Z0-9.]+$/

これは、スペースと連続するピリオドを拒否しながら、英数字とピリオドを許可するために機能しますが、開始ピリオドや終了ピリオドを確認する方法がわかりません。どうすればこれを行うことができますか?そして、私がすでに持っていることを行うためのさらに良い方法はありますか?

4

3 に答える 3

3

ほとんどの場合、正規表現がどのように見えるかを概念化するために有限状態マシンを描画するのに役立ちます。

^(?:\w\.?)*\w$
于 2013-01-03T16:32:16.077 に答える
1

これが可能な方法です

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

詳細な説明とテストについては、こちらを参照してください:http: //www.regex101.com/r/rZ6yH4

編集:タイラーの解決策によると、これが彼のやり方であり、短縮されて文字と数字に縮小されています

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

http://www.regex101.com/r/dL5aG0

于 2013-01-03T16:32:00.263 に答える
0

開始は次のようになります。

/^[^. ](?!.*\.{2})[a-zA-Z0-9.]+[^. ]$/

ただし、慎重にテストする必要があります。

于 2013-01-03T16:23:12.923 に答える