我有一个正则表达式,允许字母数字,下划线和点,但不连续点:正则表达式,不允许连续点
^(?!.*?[.]{2})[a-zA-Z0-9_.]+$
我还需要现在允许在字符串的第一个和最后一个字符点。
我该怎么做?
我有一个正则表达式,允许字母数字,下划线和点,但不连续点:正则表达式,不允许连续点
^(?!.*?[.]{2})[a-zA-Z0-9_.]+$
我还需要现在允许在字符串的第一个和最后一个字符点。
我该怎么做?
你可以用另外的向前看符号像这样使用它:
^(?!\.)(?!.*\.$)(?!.*?\.\.)[a-zA-Z0-9_.]+$
(?!\.)
- 不允许.
在启动(?!.*?\.\.)
- 不允许连续2点(?!.*\.$)
- 唐不允许.
结束重新编写的正则表达式为
^[a-zA-Z0-9_]+(?:\.[a-zA-Z0-9_]+)*$
或者(如果您正则表达式的味道的ECMAScript标准的地方\w
= [a-zA-Z0-9_]
):
^\w+(?:\.\w+)*$
详细:
^
- 串的开始[a-zA-Z0-9_]+
- 1或多个单词字符(?:\.[a-zA-Z0-9_]+)*
- 零个或更多序列:
\.
- 点[a-zA-Z0-9_]+
- 1或多个单词字符$
- 字符串末尾
只是想,这可以指出写得像'^(?!\。)(?!。* \。$)(?!。*。\。\。)[\ w。] + $' – nozzleman
这样短小。确实'\ w'是快捷方式''[[a-zA-Z0-9_]'在许多正则表达式中,但在awk,sed等中不支持。 – anubhava
@nozzleman:甚至更短:'^ \ w +(\。\ w +)* $'回答,但与一个捕获组)。 –