Scala, 9280 bytes
def^(s:String)="s=>"(.)\\1*".r.findAllIn(s).map(_.size).reduce((x,y)=>(BigInt(x) gcd y).toInt)>1
PS. Original solution was based on split
function but it's longer (9583 bytes).
def^(s:String)=s=>(s+s).split("(.)(?!\\1)").map(_.size+1).reduce((x,y)=>(BigInt(x) gcd y).toInt)>1