我正在为以下条件
创建一个正则表达式一个字符串可以包含任何字母,数字和'和? 字符串应以字母或数字开头
代表:
adsfj
asfj's
jfkd'sdf?
df
ds?
afjdk?
都是有效的
我使用C#2.0
我试过这样的事情
^[a-zA-Z0-9]+[']\*[a-zA-Z0-9]\*[?]\*[a-zA-Z0-9]\*$
没有解决问题....任何想法..?
答案 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}$