如何使用正则表达式确保字符不出现在结尾或开头以及不重复?

How to ensure that a character do not come at the end or the beginning as well as is not repeated using Regular Expressions?

我刚开始学JS。在正则表达式主题中,作为我的作业之一,这是问题陈述。

字符串可以有以下字符-

大写 (A-Z) 和小写 (a-z) 英文字母。

位数(0-9)。

个字符! # $ % & ' * + - / = ? ^ _ ` { | } ~

个字符。点,前提是它不是第一个或最后一个字符,并且不会一个接一个地出现。

我尝试了很多不同的方法,我能做的最好的是 - /^[^.]([\^><@,.]+)/

显然是错误的。我的主要问题是确保 .(dot) 不会出现在开头或结尾并且不会重复。还有其他问题。

有人可以帮我吗?

开头的否定前瞻确保点永远不会出现在输入字符串的开头,并拒绝连续的句点或末尾的句点,像 \.(?!\.|$) 这样的表达式将完成这项工作:

^(?!\.)(?:[A-Za-z0-9!#$%&'*+\/=?^_`{|}~-]+|\.(?!\.|$))+$

live demo here