此正则表达式中单引号的用途是什么?

Mic*_*cci 4 .net c# regex string-literals

我继承了一些带有以下正则表达式的 C# 代码

Regex(@"^[a-zA-Z''-'\s]{1,40}$")
Run Code Online (Sandbox Code Playgroud)

除了单引号的作用之外,我理解这个字符串。我到处搜索但似乎找不到解释。有任何想法吗?

Mik*_*sen 5

据我所知,这个表达是多余的。

它匹配a-zor A-Z,或'字符,或'and之间的任何内容'(当然,这又只是'字符,或任何空格。

我已经使用RegexPal对此进行了测试,除了这些字符之外,它似乎不匹配任何内容。也许该序列是由代码生成的,或者它用于匹配早期版本中更广泛的字符?

更新:根据您的评论(匹配名称),我将继续猜测作者认为他通过将连字符放在引号中来逃避连字符,并且不是最出色的软件测试人员。他们的意思大概是:

Regex(@"^[a-zA-Z'\-\s]{1,40}$") //Escaped the hyphen
Run Code Online (Sandbox Code Playgroud)

也可以写成:

Regex(@"^[a-zA-Z'\s-]{1,40}$") //Put the hyphen at the end where it's not ambiguous
Run Code Online (Sandbox Code Playgroud)