如何编写匹配所有不包含任何控制字符的字符的正则表达式?

How to write regex which matches all characters that does not contain any control characters?

我需要编写一个正则表达式来匹配不包含任何控制字符的单词。我读到负前瞻用于此并写了这个正则表达式:

/(?!\p{C}+)/

但不明白为什么它不起作用。预期结果:

word without control characters - 匹配

word with control character ‎between - 不匹配

您可以使用 \p{C} 匹配任何控制字符。您可以使用 \P{C} 匹配控制字符以外的任何字符。看到一个regex demo with your string.

如果要匹配未粘附到某些控制字符的单词,请使用 (?<!\p{C})\b\w+\b(?!\p{C}),请参阅 this regex demo。在这里,(?<!\p{C}) 是一个负向后视,它匹配一个没有紧接在控制字符前面的位置,\b\w+\b 匹配一个或多个字边界内的单词字符,(?!\p{C}) 是一个负向前视,它匹配一个位置没有紧跟控制字符。

如果您想从 \p{C} 模式中“排除”CR 和 LF 字符,您可以使用 (?<![^\P{C}\r\n])\b\w+\b(?![^\P{C}\r\n]),请参阅 this regex demo