2010-11-05 158 views
1

你好我想纠正一个正则表达式,将采取一个字符串,并确保其与“R”开头,后面4个数字,然后什么需要帮助的正则表达式

如。 RXXXX .................

任何人都可以帮助我吗?这是ASP.NET

+2

这是如此可怕_basic_正则表达式,我建议你把你的生活的一个半小时,只是粉饰http://www.regular-expressions.info /之后,你应该明白知道。 – Wrikken 2010-11-05 00:08:19

+2

或者他可以花两分钟的时间提问,学习一些东西并节省时间。什么是不必要的人喜欢你给他垃圾。 – 2010-11-05 00:14:18

+0

谢谢特拉维斯,我没那么有经验,任何帮助都很好。 – BigJim 2010-11-05 00:18:04

回答

2

你希望它在行的开头,而不是在任何地方。此外,为了提高效率,您不希望末尾的.+.*因为会匹配不必要的字符。所以下面的正则表达式是你真正想要的:

^R\d{4} 
+0

它很有趣,我在考虑效率,并删除了$,因为我正在输入我的答案。不知道它是如何消除我的。*你得到我的投票!由于他对基本正则表达式的理解是零,所以整个区分大小写的事情可能会像我一样指出。 – pinkfloydx33 2010-11-05 00:13:19

2

这应该这样做...

^R\d{4}.*$ 
  • \d{4}比赛4个位数
  • .*是一个简单的方法来匹配任意字符0次或多次
  • 的开始^和结束$锚点确保没有任何前后任何地址

文森特建议,为您的特定任务,它甚至可以被简化为这...

^R\d{4} 

因为正如你所说,它并不真正的问题是什么如下。

+0

'。* $'没用,你可以删除它。 – 2010-11-05 00:11:42

0
^R\d{4}.* 
  • 插入符号^字符串中的第一个字符前的位置相匹配设置不区分大小写选项。
  • \d匹配任何数字字符(它是相同的如[0-9])
  • {4}表明存在必须是4号,和
  • .*匹配0个或多个其他字符

要用途:

string input = "R0012 etc.."; 

    Match match = Regex.Match(input, @"^R\d{4}.*", RexOptions.IgnoreCase); 

    if (match.Success) 
    { 
     // Success! 
    } 

注意使用RexOptions.IgnoreCase忽略字母R的情况下,(所以它会匹配其启动W¯¯串ith r。如果您不想进行不区分大小写的匹配,请将其保留。