# Java (with regex), 134 bytes s->s.matches("|(?:(.)(?<=(?=^.*?(\\1\\2?)$).*))+(?<=(?=^\\2$).*)")//)")*.)$2\\^=?(=<?(+))*.)$)?2\\1\\(?*.^=?(=<?().(:?(|"(sehctam.s>-s [Credits where due](http://stackoverflow.com/questions/3664881/how-does-this-java-regex-detect-palindromes) ## Testing import java.util.function.*; class Ideone { static Predicate<String> isPalindrome = s->s.matches("|(?:(.)(?<=(?=^.*?(\\1\\2?)$).*))+(?<=(?=^\\2$).*)")//)")*.)$2\\^=?(=<?(+))*.)$)?2\\1\\(?*.^=?(=<?().(:?(|"(sehctam.s>-s ; public static void main (String[] args) throws java.lang.Exception { testPalindrome("", true); testPalindrome("x", true); testPalindrome("xx", true); testPalindrome("xy", false); testPalindrome("xyx", true); testPalindrome("xxx", true); testPalindrome("xxyx", false); testPalindrome("racecar", true); testPalindrome("step on no pets", true); testPalindrome("aManaPlanaCanalPanaMa", true); testPalindrome("this is impossible", false); } static void testPalindrome(String s, boolean expected) { if (isPalindrome.test(s) == expected) { System.out.println("OK"); } else { System.out.printf("NOK: str=\"%s\", expected=%b%n", s, expected); } } } [Test it yourself!](http://ideone.com/ZjdClm)