字母和数字的特定组合的正则表达式

时间:2015-04-24 15:06:06

标签: c# regex

我正在尝试为以下类型的字符串创建正则表达式:

  

前缀(XI / YV / XD / YQ / XZ)的组合,仅限数字,并且没有'Z'或'Z'后缀。

例如,XD35Z应该通过但XD01HW不应通过。

到目前为止,我尝试了以下内容:

  • @"XD\d+Z?" - XD35Z通过,但不幸的是它也适用于XD01HW

  • @"XD\d+$Z" - XD01HW失败,这是我想要的,但XD35Z也失败了

  • 我也试过了@"XD\d{1,}Z"?,但它无效

我需要一个正则表达式,它会为两种类型的字符串提供适当的结果。

3 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

^(XI|YV|XD|YQ|XZ){1}\d+Z{0,1}$

我正在使用量化大括号来明确限制每个字符/组的允许数量。 ^$锚点确保正则表达式只匹配整行(字符串)。

这个正则表达式检查

分为逻辑部分
  • ^(XI|YV|XD|YQ|XZ){1}从一个允许的前缀开始
  • \d+后跟一个或多个数字
  • Z{0,1}$结束时间为0到1 Z

答案 1 :(得分:0)

你误用$代表正则表达式中字符串的结尾

应该是:@"^XD\d+Z?$"(注意它出现在正则表达式的末尾,Z?之后)

答案 2 :(得分:0)

遵循您想要的行为的正则表达式是:

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener ll = new myLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, ll);
enableGPS(lm);

PostData sender = new PostData(); //just initialize sender here

说明:

  

前缀(XI / YV / XD / YQ / XZ)的组合

^(XI|YV|XD|YQ|XZ)\d+Z?$
  

仅限数字

^(XI|YV|XD|YQ|XZ)
  

'Z'或'Z'后缀

\d+