如何编写匹配除换行符 外所有控制字符的正则表达式?
匹配除换行符外所有控制字符的正则方案
当然可以实现!你已经掌握了匹配所有Unicode控制字符的核心正则/\p{Cc}/,接下来只要把换行符(U+000A)从这个集合里排除掉就好,不同正则引擎下有两种常用的写法:
1. 支持Unicode字符类交集的引擎(Java、PCRE、.NET等)
如果你用的是支持字符类交集语法的引擎,直接用交集规则精准排除换行符:
[\p{Cc}&&[^\n]]
这个表达式的逻辑很清晰:属于控制字符集合,同时不属于包含换行符的集合,完美命中你要的目标——所有控制字符,唯独排除\n。
2. 不支持交集语法的引擎(JavaScript等)
对于不支持交集的引擎,可以换个反向思路:匹配「既不是非控制字符,也不是换行符」的字符,写成:
[^\P{Cc}\n]
这里\P{Cc}是\p{Cc}的反向,表示所有非控制字符,整个字符类就等价于「控制字符 - 换行符」,效果和上面完全一致。
验证小提示
你可以用这些字符测试:
- 会被匹配的:制表符
\t、回车符\r、退格符\b等控制字符 - 不会被匹配的:换行符
\n、普通字母数字、符号等非控制字符
内容的提问来源于stack exchange,提问作者Niels Kristian
相关产品推荐
相关产品推荐

