正则表达式匹配一个点或三个点验证器

时间:2013-05-14 09:57:41

标签: javascript regex

在字段中想要允许一个点或三个点

对于三点我的正则表达式就是它正常工作

/^[a-zA-Z]+[.]{3}$/

但是我尝试了一次和三次它都不起作用。我试着用| (或)签名

/^([a-zA-Z]+[.]{1})|([a-zA-Z]+[.]{3})$/

提前致谢

再次感谢它的工作但是我想允许以下选项

表示1 0r 3点在字中的任何位置但不是2,4,5点。

1) M.C.A
2) M.C.A...
3) M...CA.

以下正则表达式适用于上述要求

/^([a-zA-Z]+(\.|\.\.\.)([a-zA-z]+)?)+$/

4 个答案:

答案 0 :(得分:1)

您可以使用此

/^[a-zA-Z]+[.](?:[.]{2})?$/

意味着,匹配一个点,可选择两个。

(?:[.]{2})?是一个非捕获组(因为?:),因为最后的?是可选的。

答案 1 :(得分:1)

您可以将或语句简化为一个组,例如

^[a-zA-Z]+(\.|\.\.\.)$

这将匹配以....

结尾的任意数量的字符

答案 2 :(得分:0)

交替的范围是错误的(字符串开始锚点只影响第一次交替,字符串结尾锚点只影响第二次交替):

/^([a-zA-Z]+[.]{1})   |   ([a-zA-Z]+[.]{3})$/

更改括号以确保两个锚点都绑定到两个替换:

/^([a-zA-Z]+[.]{1}|[a-zA-Z]+[.]{3})$/

或更好,没有任何改变:

/^[a-zA-Z]+\.(\.{2})?$/

答案 3 :(得分:0)

您错放了|。您尝试匹配以([a-zA-Z]+[.]{1})开头或以([a-zA-Z]+[.]{3})结尾的文字

正确的正则表达式是

/^[a-zA-Z]+([.]{3}|[.])$/