Я хочу разрешить буквенно-цифровые символы и периоды; однако фраза не может содержать больше двух или более периодов в строке, она не может начинаться или заканчиваться периодом, а пробелы не допускаются.
Я использую PHP и Javascript.
До сих пор у меня есть / /^(?!.*\.{2})[a-zA-Z0-9.]+$/
Это работает для указания буквенно-цифровых символов и периодов, в то же время отрицая пробелы и последовательные периоды, но я до сих пор не уверен, как проверить начальные и / или конечные периоды. Как я могу это сделать? и есть ли еще лучший способ сделать то, что у меня уже есть?
вот возможный путь
/^(?!\.)((?:[az\d]|(?<!\.)\.)+)(?<!\.)$/i
для получения дополнительных пояснений и тестов см. здесь: http://www.regex101.com/r/rZ6yH4
edit: согласно решению tyler, вот он, укорочен и сокращен до букв и цифр
/^(?:[az\d]+(?:\.(?!$))?)+$/i
Это почти всегда помогает рисовать конечный автомат, чтобы концептуализировать то, как должно выглядеть ваше регулярное выражение.
^(?:\w\.?)*\w$
Начало было бы:
/^[^. ](?!.*\.{2})[a-zA-Z0-9.]+[^. ]$/
но его следует тщательно проверять.