提问者:小点点

不允许连续点的正则表达式


我有一个正则表达式允许字母数字,下划线和点,但不允许连续点:

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

我现在还需要在字符串的第一个和最后一个字符中允许点。

我怎么能这么做呢?


共3个答案

匿名用户

您可以像这样使用它和附加的lookahead:

^(?!\.)(?!.*\.$)(?!.*?\.\.)[a-zA-Z0-9_.]+$
  • (?!\.)-开始时不允许.
  • (?!.*?\.\.)-不允许两个连续点
  • (?!.*\.$)-不允许.结尾

匿名用户

将正则表达式重写为

^[a-zA-Z0-9_]+(?:\.[a-zA-Z0-9_]+)*$

或者(如果您的正则表达式风格符合ECMAScript,其中\w=[a-zA-Z0-9_]):

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

请参阅regex演示

详细信息:

  • ^-字符串开始
  • [a-zA-Z0-9_]+-1个或多个单词字符
  • (?:\.[a-zA-Z0-9_]+)*-零个或多个序列:
    • \.-点
    • [a-zA-Z0-9_]+-1个或多个单词字符

匿名用户

您可以尝试以下操作:

^(?!.*\.\.)[A-Za-z0-9_.]+$

这将不允许字符串中有任何连续的点,也将允许点作为第一个和最后一个字符

在这里试过