需要一个只有特殊字符点的正则表达式,该字符点应该是可选的或只出现一次。
pattern = /^([A-Za-z.]+)$/;
如果没有更多的信息,我将使用
/^(?!$)[a-z]*.?[a-z]*$/i
负向前看防止空匹配。
在regex101
查看这个演示以下是一些方法:
-
分别处理输入有一个点,周围有可选字母,或没有点(但至少有一个字母):
/^([a-z]*.[a-z]*|[a-z]+)$/i
-
就像你做的那样捕获字母和点,但不允许输入有两个点,使用否定的向前看:
/^(?!(.*.){2})([a-z.]+)$/i
-
捕获可选的字母,然后是可选的点,然后是可选的字母,但禁止空输入,并使用负向前看:
/^(?!$)([a-z]*.?[a-z]*)$/i
如果在任何情况下点不应该在开始或结束并且不匹配空字符串,您可以从1个或多个字符a-z开始匹配,然后有选择地匹配一个点和1个或多个字符a-z:
/^[a-z]+(?:.[a-z]+)?$/i
Regex演示