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

时间:2010-02-08 06:45:33

标签: c# regex

我正在为以下条件

创建一个正则表达式

一个字符串可以包含任何字母,数字和'和? 字符串应以字母或数字开头

代表:

adsfj
asfj's
jfkd'sdf?
df
ds?
afjdk?

都是有效的

我使用C#2.0

我试过这样的事情

  ^[a-zA-Z0-9]+[']\*[a-zA-Z0-9]\*[?]\*[a-zA-Z0-9]\*$

没有解决问题....任何想法..?

3 个答案:

答案 0 :(得分:5)

它比你做的简单:^[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'?]*$

答案 1 :(得分:1)

怎么样:

Regex rx = new Regex(@"^[a-z\d][a-z\d'?]*$", RegexOptions.IgnoreCase);

这就像你说的那样匹配: 开头:字母或数字中的任何字母。 直到最后它可以包含:字母表中的任何字母,数字,或?字符。

答案 2 :(得分:0)

^[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}$