我有以下正则表达式:
/^(\d{1,11})((?:(?:c?o|co?).*)?.*)$/i
匹配字符串的:
125******* or 125co****** or 125CO*******
我想排除以:
开头的子串125af***** or 125AF****** or 125f****** or 125AF********
提前致谢
答案 0 :(得分:2)
试试这个
^(?>\d{1,11})(?!af|a|f)((?:(?:c?o|co?).*)?.*)$
我对你的正则表达式进行了两处修改:
我通过在开始时添加(?>\d{1,11})
来创建第一个组atomic(?>
)。这是为了避免回溯到已经匹配的数字,
我添加了negative lookahead (?!af|a|f)
,以确保没有af,a或f跟随。为了实现这个目的,我需要第一组是原子的,以确保它真正照看前面的最后一个数字。 (否则它会回溯,看到前面的最后一个数字,认为一切都很好,并与最后一个.*
匹配其余的字符串