我正在尝试使用正则表达式验证我的字符串。这是我想要做的事情
EditText serialText = (EditText) findViewById(R.id.pinText);
serialText.setVisibility(View.VISIBLE);
serialNumber = serialText.getText().toString();
我将序列号存储在serialNumber
中我有以下方法来匹配正则表达式
boolean isRegularSerialNumber(String pinNumber) {
// regular expression to be matched against
String regularString = "[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}";
Pattern pattern = Pattern.compile(regularString);
Matcher matcher = pattern.matcher(pinNumber);
boolean isRegularSerialNumberValid ;
if (pinNumber.matches(regularString))
isRegularSerialNumberValid = true;
else
isRegularSerialNumberValid = false;
return isRegularSerialNumberValid;
}
但我无法与之匹敌。
对此有何回答?希望模式和匹配器是正确的。
我想要做的就是这个匹配的serialNumber我正在验证存储在数据库中的序列号。如果找到匹配,则返回成功或失败。我输入了存储在数据库中的确切序列号,但即便如此,它也会返回失败。
我遵循@Stevehb所说的方法,在这种情况下我得到了匹配。
这就是我发送数据的方式
parameter.add(new BasicNameValuePair(“validate”,serialNumber));
打破我的头脑。
答案 0 :(得分:2)
内置的String
函数应该可以自行运行。 isRegularSerialNumber()
可能只是
boolean isRegularSerialNumber(String pinNumber) {
String regularString = "[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}";
return pinNumber.matches(regularString);
}
当我测试1234-5678-9012-1324
(true)和12-1234-123-1324
(false)时,这对我有用。
此外,看起来你可能会在看到serialText
之后立即抓取输入字符串。您的问题可能是在用户输入任何内容之前抓取文本吗?
答案 1 :(得分:1)
看起来很像.net正则表达式代码。
而不是
if (pinNumber.matches(regularString))
试
if (matcher.matches())