Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有以下正则表达式:
/^(\d{1,11})((?:(?:c?o|co?).*)?.*)$/i
匹配字符串,如:
125******* or 125co****** or 125CO*******
我想排除以下开头的子字符串:
125af***** or 125AF****** or 125f****** or 125AF********
提前致谢
试试这个
^(?>\d{1,11})(?!af|a|f)((?:(?:c?o|co?).*)?.*)$
在 regexr 上查看
我对您的正则表达式进行了两项更改:
我通过在开头添加了第一组原子( )。这是为了避免回溯到已经匹配的数字,(?>\d{1,11})?>
(?>\d{1,11})
?>
我添加了一个负前瞻 (?!af|a|f),以确保没有 af、a 或 f 跟随。为此,我需要第一组是原子的,以确保它真正照顾前面的最后一个数字。(否则它会回溯,看到前面最后一个数字,认为一切都很好,并将字符串的其余部分与最后一个匹配.*)
(?!af|a|f)
.*