我有一个正则表达式允许字母数字,下划线和点,但不允许连续点:
^(?!.*?[.]{2})[a-zA-Z0-9_.]+$
我现在还需要在字符串的第一个和最后一个字符中允许点。
我怎么能这么做呢?
您可以像这样使用它和附加的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_.]+$
这将不允许字符串中有任何连续的点,也将允许点作为第一个和最后一个字符
在这里试过