首页 > 解决方案 > 正则表达式只允许星号(*)一次并最终

问题描述

我只想传递这样的字符串:

abc*
123*
abc 123*
abc-123abc*

我不想传递这样的字符串:

 - abc**
 - abc*123
 - *abc

星号必须在最后且仅出现一次。

使用正则表达式,\*我得到所有星号,但我不知道我是如何指定的。我不太擅长正则表达式。

标签: regexkleene-star

解决方案


您可以使用

^[^*]*\*$

请注意,它也会匹配一个*字符串。如果必须至少有两个字符,请将[^*]*部分替换[^*]+为匹配一个或多个字符,而不是*在 final 之前*

请参阅正则表达式演示。细节:

  • ^ - 字符串的开头
  • [^*]*- 除 之外的零个或多个字符*,尽可能多(贪婪地)
  • \*- 一个*字符
  • $- 在字符串的末尾。

推荐阅读