我有一个正则表达式,允许使用字母数字,下划线和点,但不允许连续点:
^(?!.*?[.]{2})[a-zA-Z0-9_.]+$
我现在还需要在字符串的第一个和最后一个字符中允许点。
我该怎么做?
答案 0 :(得分:3)
您可以像这样使用额外的前瞻:
^(?!\.)(?!.*\.$)(?!.*?\.\.)[a-zA-Z0-9_.]+$
(?!\.)
- 不要在开始时.
(?!.*?\.\.)
- 不允许连续2个点(?!.*\.$)
- 不允许.
结束答案 1 :(得分:3)
将正则表达式重写为
^[a-zA-Z0-9_]+(?:\.[a-zA-Z0-9_]+)*$
或(如果您的正则表达式符合ECMAScript,其中\w
= [a-zA-Z0-9_]
):
^\w+(?:\.\w+)*$
请参阅regex demo
<强>详情:
^
- 字符串开头[a-zA-Z0-9_]+
- 一个或多个单词字符(?:\.[a-zA-Z0-9_]+)*
- 零个或多个序列:
\.
- 一个点[a-zA-Z0-9_]+
- 一个或多个单词字符$
- 字符串结尾答案 2 :(得分:0)