我需要创建一个正则表达式来验证任何没有点的文本或任何以.gt
或.lt
结尾的文本。任何包含多个点的文本也应无效。
anytext // valid
anytext.gt // valid
anytext.lt // valid
anytext.xx // invalid
anytext.xx.gt // invalid
我创建了这个:^.*(\.(gt|lt)|(?<!\..*))$
它的效果很好,除了它接受多于1个点的事实,因此像foo.bar.gt
这样的东西正在被验证,不应该。
答案 0 :(得分:2)
您可以匹配一个或多个单词字符\w+
,或在字符类中指定要匹配的内容,并以可选点后跟gt或lt:
<强>解释强>
^
在行首处断言位置\w+
一个或多个word characters (?:
非捕获组
\.[gl]t
匹配一个点,g
或l
后跟t
)?
关闭非捕获组并将其设为可选$
断言行尾的位置答案 1 :(得分:2)
您可以使用:
^[^.\n]+(\.(gt|lt))?$
与您的解决方案的主要区别:
.
我使用了[^.\n]
- 任何角色
除了点或换行符之外。+
,只接受非空内容。(?<!\..*)
)和前面的|
。?
,因为.lt
或.gt
后缀是可选的。还有一句话:在负面的背后,你不能使用量词
(你试过.*
)。
答案 2 :(得分:1)
答案 3 :(得分:1)
就这么简单:^\w+(\.[gl]t){0,1}$
。 \w
将匹配.gt
或.lt