我有一个错误的正则表达式
([A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]*\.)
我需要接受以下字符串:
a-b.
ab.
a.
但我不需要这个字符串 - a-.
我应该改变什么?
答案 0 :(得分:1)
[A-Za-z0-9]+\.|[A-Za-z0-9]+-?[A-Za-z0-9]\.
这个想法是:
-?
- 可选短划线\.
- 转义点,以匹配文字点|
- 交替(一个或另一个)x+
- 一次或多次重复,相当于xx*
如果您不介意匹配下划线,可以使用word character set:
\w+\.|\w+-?\w\.
答案 1 :(得分:1)
您可以尝试使用可选组。
"(?i)[A-Z0-9](?:-?[A-Z0-9]+)*\\."
(?i)
标志。[A-Z0-9]
一个字母数字字符(?:-?[A-Z0-9]+)*
任意数量的(?:
可选连字符,后跟一个或多个alnum )
\.
字面点See demo at Regexplanet(点击Java)
答案 2 :(得分:1)