我必须检查用户输入的字符串是否采用特定格式,例如:
@"^\(?([0-9]{3})\)?[-. ]?([0-9]{4})[-. ]?([0-9]{7})[-. ]?([0-9]{1})$"
即在前3位数后的连字符,然后是4位数后的另一个连字符,在七位数后连字符,然后是一位数。
我使用了下面的正则表达式
-
它适用于上面的表达式,但它也会传递没有eg:- 123-1234-1234567-1 //pass
123123412345671 //also getting pass.
的表达式
$(document).click(function () {
$('#contact-form').submit(function () {
//validation
if (!checkgender() || !checkpassword()) {
return false;
} else {
return true;
}
});
});
第二个字符串应该失败。我应该在正则表达式中做些什么改变来实现同样的目标?
答案 0 :(得分:1)
您可以简单地使用:
^\d{3}-\d{4}-\d{7}-\d$
如果您想将点和空格也作为分隔符,请使用:
^\d{3}[-. ]\d{4}[-. ]\d{7}[-. ]\d$
答案 1 :(得分:1)
问题是您在//DATA_PATH = Environment.getExternalStorageDirectory().toString() + "/MyOCRApp/tessdata";
AssetManager assetManager = getAssets();
String[] files = new String[0];
try {
files = assetManager.list("");
} catch (IOException e) {
e.printStackTrace();
}
for (String currPath:files){
if (currPath.equals("tessdata")){
DATA_PATH = "///android_asset/"+ currPath;
}
}
之后有可选的量词?
。
删除它们,它应该工作正常
[. ]
@"^\(?([0-9]{3})\)?[-. ]([0-9]{4})[-. ]([0-9]{7})[-. ]([0-9]{1})$"
使前面的模式可选,因为它匹配0或1个字符。因此,在第二个示例中,正则表达式引擎安全地匹配零?
以匹配整个字符串