至少一个字母表的正则表达式,不应允许点 (.)

Regex for at least one alphabet and shouldn't allow dot(.)

我已经在下面编写了正则表达式,但我遇到了一个问题:

^[^\.]*[a-zA-Z]+$

根据上面的正则表达式,df45543 无效,但我想允许这样的字符串。只有一个字母字符是强制性的,不允许使用点。允许所有其他字符。

您需要使用前瞻来强制执行一个字母表:

^(?=.*?[a-zA-Z])[^.]+$

(?=.*?[a-zA-Z]) 是一种积极的前瞻,确保输入中至少有一个字母表。

只需将数字添加为允许的字符:

^[^\.]*[a-zA-Z0-9]+$

demo

如果您需要禁止点,并允许至少 1 个英文字母,则使用先行:

^(?!.*\.)(?=.*[a-zA-Z]).+$

(?!.*\.)不允许字符串中有点,(?=.*[a-zA-Z])要求至少一个英文字母。

another demo

另一种情况是仅在开头不允许使用点。然后,使用

^(?!\.)(?=.*[a-zA-Z]).+$

你可以使用这个:

^[^.a-z]*[a-z][^.]*$

(使用不区分大小写的方式,或者在字符类中添加A-Z)

您可以将正则表达式的第一部分 ^[^.]* 添加到末尾,如下所示

^[^.]*[A-Za-z]+[^.]*$

试试这个Demo