正则表达式范围与backref

时间:2014-01-22 23:59:42

标签: javascript regex

几天前,作为正则表达式高尔夫游戏的一部分,我的任务是构建一个匹配字符串的正则表达式,其字符严格按字母顺序排列(允许重复)。例如,它应匹配

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]

有没有办法在范围内使用反向引用?

1 个答案:

答案 0 :(得分:1)

JavaScript正则表达式实现应该给出的官方错误是:

JavaScript does not support octal character escapes

\1 对于Literal hyphens in character classes must be escaped

-

所以基本上,它认为你试图逃避数字1,然后让它认为连字符也是字面意思......


由于您的要求的具体性质,我认为您的第一个正则表达式将不得不这样做。