Нет периодов в начале или конце выражения?

Я хочу разрешить буквенно-цифровые символы и периоды; однако фраза не может содержать больше двух или более периодов в строке, она не может начинаться или заканчиваться периодом, а пробелы не допускаются.

Я использую PHP и Javascript.

До сих пор у меня есть / /^(?!.*\.{2})[a-zA-Z0-9.]+$/

Это работает для указания буквенно-цифровых символов и периодов, в то же время отрицая пробелы и последовательные периоды, но я до сих пор не уверен, как проверить начальные и / или конечные периоды. Как я могу это сделать? и есть ли еще лучший способ сделать то, что у меня уже есть?

вот возможный путь

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

для получения дополнительных пояснений и тестов см. здесь: http://www.regex101.com/r/rZ6yH4

edit: согласно решению tyler, вот он, укорочен и сокращен до букв и цифр

 /^(?:[az\d]+(?:\.(?!$))?)+$/i 

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

Это почти всегда помогает рисовать конечный автомат, чтобы концептуализировать то, как должно выглядеть ваше регулярное выражение.

 ^(?:\w\.?)*\w$ 

Начало было бы:

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

но его следует тщательно проверять.