几天前,作为正则表达式高尔夫游戏的一部分,我的任务是构建一个匹配字符串的正则表达式,其字符严格按字母顺序排列(允许重复)。例如,它应匹配
bet
fin
ghost
accjkkpppz
但不应匹配
aghast
polonium
rhesus
qispeha
分别失败'a','o','h'和'i'。
我第一次使用^a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*$
但是发生了一个更短的解决方案应该可以使用backref:
^((.)(?=[\1-z]|$))+$
这个正则表达式应该找到一个字符,向前看并看到一个字符> =它或工作结束,然后重复。
然而,我已经挂了中间的反射和范围,这似乎与我通过的任何测试无关:
[\1-z]
有没有办法在范围内使用反向引用?
答案 0 :(得分:1)
JavaScript正则表达式实现应该给出的官方错误是:
JavaScript does not support octal character escapes
的 \1
对于Literal hyphens in character classes must be escaped
和-
所以基本上,它认为你试图逃避数字1
,然后让它认为连字符也是字面意思......
由于您的要求的具体性质,我认为您的第一个正则表达式将不得不这样做。