C#中的正则表达式

时间:2012-01-23 10:13:37

标签: c# asp.net .net regex

我需要验证输入,例如en-US或en-us或ar​​-AE 我搜索过网,发现它有点难以理解,并且在字符串上创建一个常规表达式,长度不超过5个字符,并且应该是不区分大小写的。

我创建了一个[a-z][a-z][-][a-z][a-z]这个工作正常,但它没有检查长度 它也会与en-USXYZ相匹配

此致

7 个答案:

答案 0 :(得分:4)

这就是锚点的用途:

(?i)^[a-z]{2}-[a-z]{2}$

在编译正则表达式时也可以设置不区分大小写的选项(?i)

Regex regexObj = new Regex("^[a-z]{2}-[a-z]{2}$", RegexOptions.IgnoreCase);

答案 1 :(得分:4)

使用这样的一个:

^[a-z]{2}-[a-z]{2}$

答案 2 :(得分:3)

试试这个:

^[a-z][a-z][-][a-z][a-z]$

答案 3 :(得分:1)

使用此正则表达式:

^[a-z]{2}-[a-z]{2}$

答案 4 :(得分:0)

您应该在表达式中使用锚点:

^[a-z][a-z][-][a-z][a-z]$

答案 5 :(得分:0)

\w{2}[-]\w{2}应该这样做:

\w - >性格
{2} - >确切2次

编辑:\w也允许号码[a-z]{2}[-][a-zA-Z]{2}

答案 6 :(得分:0)

您使用^$来指定字符串的开头和结尾。

^[a-z][a-z]-[a-z][a-z]$

或使用乘数:

^[a-z]{2}-[a-z]{2}$

除非您为Regex对象指定了case insensetivity,否则您还必须包含大写字符的A-Z间隔:

^[A-Za-z]{2}-[A-Za-z]{2}$