A man, a plan:
判断回文,如果不确定串长度情况下可以考虑利用反向引用构造pattern,例如: (.)1 , (.)(.)21 , (.)(.)(.)321 ...但这里只需要判下前后两个char就好了。
^(?:(.)(.).*21)$
Prime :
判断元素个数是不是素数,是的话匹配成功否则失败。一开始写了个大暴力pattern A掉了。后来看到正解真是叹为观止= =,长这个样子:
^(?!(..+)1+$)
换句话说就是如果一个数可以表示为 n=k*x ,x>=2,k>=2,那就会匹配失败。
一开始以为 ^(?!(..+){2,}$) 也应该是对的,但是一直W,原因在于1是对前面的引用,二者内容一致,(引用的是文本内容而并非表达式)但是(..+){2,}的话等价于多个(..+),而这个东西的表示是不唯一的,所以这样写是错的。