使用正则表达式匹配"前景"或"foregroun"或"foregrou"......或"f"的最简单方法是什么?

use*_*580 2 regex

使用正则表达式匹配"前景"或"foregroun"或"foregrou"......或"f"的最简单方法是什么?我知道我可以用下面的Regex来做.但是我想知道是否有更简单的.

^f|fo|for|fore|foreg|foregr|foregro|foregrou|foregroun|foreground$
Run Code Online (Sandbox Code Playgroud)

Tim*_*ker 5

你的正则表达式是不正确的; 你需要通过使用一组来限制交替的范围(最好是非捕获):

^(?:f|fo|for|fore|foreg|foregr|foregro|foregrou|foregroun|foreground)$
Run Code Online (Sandbox Code Playgroud)

这已经很简单了; 另一种选择(如果您觉得上述正则表达式违反DRY原则)将是

^(?:f(?:o(?:r(?:e(?:g(?:r(?:o(?:u(?:n(?:d)?)?)?)?)?)?)?)?)?)$
Run Code Online (Sandbox Code Playgroud)

  • 我打算发布这个答案,但你打败了我.可读性/维护权衡的经典示例.我会在代码tbh中这样做.c# - >`if(foregroud.StartsWith(input)){}`.你明白了. (3认同)