首页 > 解决方案 > 正则表达式匹配由点分隔的单个单词或仅允许星号

问题描述

我需要一个正则表达式,它只允许一个星号或一个由点分隔的作品,最后一个星号。例如:

test.test   = OK
test.test*  = OK
*           = OK

.                       = NO
_                       = NO
test.*                  = NO
test.test               = OK
test.test2              = OK
test*                   = OK
te*st                   = NO
test*.test              = NO

这是我到目前为止所做的

^[a-z0-9*.\-_\.:]+$

允许的非字符是点和一个星号 允许的字符是小写

标签: c#regex

解决方案


所以你想要:

  • 1 个星号
  • 一个点分隔的单词序列,只有最后一个可以跟一个星号

^((\*)|([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)*\*?)$

请注意,这[a-zA-Z0-9]+应该适应你作为一个词的真正意思。在我的回答中,它只是一个或多个字母数字字符。


推荐阅读