我正在尝试为以下类型的字符串创建正则表达式:
前缀(XI / YV / XD / YQ / XZ)的组合,仅限数字,并且没有'Z'或'Z'后缀。
例如,XD35Z
应该通过但XD01HW
不应通过。
到目前为止,我尝试了以下内容:
@"XD\d+Z?"
- XD35Z
通过,但不幸的是它也适用于XD01HW
@"XD\d+$Z"
- XD01HW
失败,这是我想要的,但XD35Z
也失败了
我也试过了@"XD\d{1,}Z"?
,但它无效
我需要一个正则表达式,它会为两种类型的字符串提供适当的结果。
答案 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+