C# 如何为以下条件创建正则表达式?
我正在为以下条件创建正则表达式 字符串可以包含任何字母、数字和“and”? 字符串应以字母或数字开头 例如: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
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.