【发布时间】:2014-04-29 19:36:21
【问题描述】:
我正在尝试强制验证一个 ID,其中前两个字母是字母,接下来的四个是数字,可以有一个 0,即 0333,但不能是 0000 的全零,因此不允许使用 ID0000 .我想出的表达式似乎在在线测试时检查出来,但在尝试在程序中强制执行时似乎不起作用:
\b(?![A-Z]{2}[0]{4})[A-Z]{2}[0-9]{4}\b
这是我目前用来实现它的代码:
String pattern = "/\b(?![A-Z]{2}[0]{4})[A-Z]{2}[0-9]{4}\b/";
Pattern regEx = Pattern.compile(pattern);
String ingID = ingredID.getText().toString();
Matcher m = regEx.matcher(ingID);
if (m.matches()) {
ingredID.setError("Please enter a valid Ingrediant ID");
}
由于某种原因,它似乎无法通过接受 ID0000 之类的 ID 进行正确验证,而实际上它不应该接受。大家有什么想法吗?
【问题讨论】:
-
字符串中应该是
\\b吗? -
是的,您需要转义反斜杠。
-
/是一个正则表达式字符串分隔符。所以你不应该同时拥有/和"。除此之外,这取决于您使用的是什么语言——这是什么? -
@KyleStrand 看起来像 Java
-
确实是Java