今天有个需求是 [无限个字符除了中文]+[无限个字符除了中文]+[无限个字符除了中文] 于是我写了个 ^[[][^u4e00-u9fa5]*[]][+-*/%][[][^u4e00-u9fa5]*[]][+-*/%][[][^u4e00-u9fa5]*[]]$ 报错 invalid range in character class 先不说语法问题,光是这一大坨玩意就让人看着不爽啊。问了下/ka大神,于是写出了以下的东西: ^(?:[w*][+-*/%]?){3}$ 还是报错。。。但是这样写已经清晰很多了,首先解释下 ?:是不让()成为捕获组,这样性能就会提高。之后还是报错, 原因是 -在[]内是元字符,代表一个“范围”。如果单纯匹配-的话,必须使-在最前面。修改后如下: ^(?:[[^u4e00-u9fa5][^u4e00-u9fa5]*][-+*/%]){2}[[^u4e00-u9fa5][^u4e00-u9fa5]*]$ 解决问题。 »本文地址:http://99jty.com/?p=466 »订阅本站:http://winysky.com/feed/»当你从RSS阅览器里看到这篇文章时,还没有评论,还不赶紧过来抢沙发?