正则表达式匹配字符后面没有重复一次的字符

时间:2014-08-12 22:51:44

标签: javascript regex

我建立了这个正则表达式以匹配字母,数字和点
只有在没有成功重复的情况下才会出现点数 例如:

something.somethnElse.another.then.something

这是匹配,因为点是分开的。 但在以下情况中:

something..thensomething

不匹配,因为彼此旁边有一个或多个点 这是我的正则表达式,请推荐我,为什么它不起作用

[a-zA-Z0-9\.]+(?!\.{2,})

我也试过

[a-zA-Z0-9\.]+(?![\.]+)

但他们都匹配成功的点

3 个答案:

答案 0 :(得分:2)

你很亲密。你可以使用这个正则表达式:

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

RegEx Demo

PS:无需转义字符类中的点

答案 1 :(得分:2)

您需要使用字符串^的开头和字符串$锚点的结尾,并将前瞻放在开头。

/^(?!.*\.{2})[a-z0-9.]+$/i

Live Demo

答案 2 :(得分:2)

首先,表达式应该被锚定,否则它只需要一个非常小的匹配。

此外,您可以将您的表达视为一串字母和数字,可以被一个点中断。

所以:

/^(?:[a-z0-9]+|\.(?!\.))*$/