我需要的是检查给定的字符串是否部分匹配给定的正则表达式.例如,对于正则表达式ab[0-9]c,字符串"a","ab","ab3"和"b3c"将"匹配",但不是字符串"d","abc"或"a3c".我一直在做的是笨重a(?:b(?:[0-9](?:c)?)?)?(只适用于部分匹配,特别是那些"开始"匹配),但由于这是API的一部分,我宁愿给用户更直观的方式输入匹配的正则表达式.
如果描述不是很清楚(我意识到它可能不是!),这将用于验证文本框上的文本输入.我想阻止任何会导致无效字符串的编辑,但我不能将字符串与常规正则表达式匹配,因为直到它完全进入,它才会匹配.例如,使用上面的正则表达式(ab[0-9]c),当我尝试输入'a'时,它被禁止,因为字符串"a"与正则表达式不匹配.
基本上,它是一种反转startsWith(),适用于正则表达式.(new Pattern("ab[0-9]c").startsWith("ab3")应该回来true.)
有任何想法吗?
Matcher.hitEnd()是您要找的?
Pattern thePattern = Pattern.compile(theRegexString);
Matcher m = thePattern.matcher(theStringToTest);
if (m.matches()) {
return true;
}
return m.hitEnd();
Run Code Online (Sandbox Code Playgroud)