C# 如何为以下条件创建正则表达式?

C# 如何为以下条件创建正则表达式?,c#,regex,C#,Regex,我正在为以下条件创建正则表达式 字符串可以包含任何字母、数字和“and”? 字符串应以字母或数字开头 例如: adsfj asfj's jfkd'sdf? df ds? afjdk? 都是有效的 我使用C#2.0 我试过这样的东西 ^[a-zA-Z0-9]+[']\*[a-zA-Z0-9]\*[?]\*[a-zA-Z0-9]\*$ 这并没有解决问题。。。。有什么想法吗?怎么样: Regex rx = new Regex(@"^[a-z\d][a-z\d'?]*$", RegexOptio

我正在为以下条件创建正则表达式

字符串可以包含任何字母、数字和“and”? 字符串应以字母或数字开头

例如:

adsfj
asfj's
jfkd'sdf?
df
ds?
afjdk?
都是有效的

我使用C#2.0

我试过这样的东西

  ^[a-zA-Z0-9]+[']\*[a-zA-Z0-9]\*[?]\*[a-zA-Z0-9]\*$
这并没有解决问题。。。。有什么想法吗?

怎么样:

Regex rx = new Regex(@"^[a-z\d][a-z\d'?]*$", RegexOptions.IgnoreCase);
正如你所说的那样: 以:字母表中的任何字母或数字开头。 直到最后,它可以包含:字母表中的任何字母、数字或?人物

^[a-zA-Z0-9][a-zA-Z0-9?']*$
这甚至允许长度为1的字符串。要指定最小和最大长度,请将正则表达式更改为:

^[a-zA-Z0-9][a-zA-Z0-9?']{minlen-1,maxlen - 1}$
例如,下面允许长度为5到10的字符串

^[a-zA-Z0-9][a-zA-Z0-9?']{4,9}$

它比你做的更简单:
^[a-zA-Z\d][a-zA-Z\d'?]*$

^            # Start of string anchor.
[a-zA-Z\d]   # First character is a letter or a digit.
[a-zA-Z\d'?] # Subsequent characters are letters, digits, apostrophes or question marks...
*            # ...repeated any number of times.
$            # Until the end of the string.

如果允许在其他字符中加下划线,则可以简化为:
^\w[\w'?]*$

第一部分中有一个额外的\w,没有警告:
[a-Z]
[a-zA-Z]
不同。范围是简单的ASCII码,并且有介于
z
A
之间的字符。还要注意的是
\w
\d
匹配的是Unicode字母和数字,而不仅仅是OP指定的ASCII字符。哇,我不知道出了什么问题,但我一定是在写的时候睡着了;)更正。
@Max
[a-Z]
错误,即使您希望允许字符介于大写字母和小写字母之间<在这种情况下,code>A-z将是正确的。(A是65,A是97)。
你说得对。据此编辑。当然,它仍然可以工作,但这绝对更干净。
^            # Start of string anchor.
[a-zA-Z\d]   # First character is a letter or a digit.
[a-zA-Z\d'?] # Subsequent characters are letters, digits, apostrophes or question marks...
*            # ...repeated any number of times.
$            # Until the end of the string.