【发布时间】:2011-03-20 05:18:15
【问题描述】:
我在我的代码中使用以下正则表达式来验证选项符号:
^([A-Za-z]{1,5}\d? +\b(?<=^.{6}))[0-9]{6}[CcPp][0-9]{8}$
如果您注意到,我使用否定的后向断言来确认之前的匹配只有 6 个字符。
然而,JScript Regex 显然不支持后向查找,但它支持前瞻。
所以,我想如果我做了类似的事情:
^((?=^.{6})[A-Za-z]{1,5}\d? +\b)[0-9]{6}[CcPp][0-9]{8}$
这会起作用。
但是,它似乎没有以同样的方式限制它。在第一个示例中,说“我后面的匹配是 6 个字符长”很有用。但是,现在它是一个前瞻,这不起作用,因为即使它不在第一组中也会有 6 个字符匹配。
我正在使用的一些测试用例示例:
Should fail:
1GOOG 12E456C12345678
GOOG 12E456C12345678
GE 4 12E456C12345678
GE4 12E456C12345678
Should pass:
GOOG1 123456C12345678
F5 123456C12345678
我怎样才能成功地将这个lookbehind转换成一个lookahead,以便我可以在javascript中使用这个表达式?
【问题讨论】:
标签: javascript regex