正则表达式不匹配

时间:2011-08-30 15:17:07

标签: android regex

我正在尝试使用正则表达式验证我的字符串。这是我想要做的事情

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));

打破我的头脑。

2 个答案:

答案 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())