REGEX - 字符串不得以这些词开头,并且可以包含字母数字字符

REGEX - String must not start from these words and may contain alphanumeric characters

要求如下:

1.First three characters must not be "CP ","C P". Note there is a space in both these words
2.First character may be alphanumeric, including À, Â, Ç, È
3.2nd and 3rd caracter can be any ascii character other than (0-31)

我遇到问题的部分是如何在字符串不以 "CP " 字或 "C P" 那个字开头的情况下编写正则表达式。请注意,ASCII 32 是 space 字符,它在正则表达式匹配中有效,但在与 "CP ".

结合时无效

我尝试过类似的方法作为起点,但无济于事

(?!CP )[^\x00-\x1F]

示例字符串

无效文本:CP 420、CP 420

有效文本:abc 420、420 ​​CP 等

我尝试了一些 REGEX 表达式,得出了这个结果。

^((?!cp )(?!c p))(.)*$

这将产生以下结果

acp  -> Matched
cpa  -> Matched
fsdgsfdgsfd  -> Matched
c psadsadsadsa  -> Not Matched
cpasdsa  -> Matched
ac pasdsadsa  -> Matched
cp sadfsdfsdf  -> Not Matched
Ècp sadfsdfsdf  -> Matched

不确定这是否是您需要的。如果没有,请提供更多示例,我将深入挖掘。

编辑 1: 按照细化的要求,试试看能不能行。

^((?!CP )(?!C P)(?!.[\x00-\x1F][\x00-\x1F]))(.)*$

您需要一个起始锚点,您需要将可选的空格添加到否定前瞻中。列出你想要的字符比列出你不需要的字符更容易,因为它是 2 个不同的范围。尝试:

^(?!(?:C ?P|CP ?))[A-Za-z\dÀÂÇÈ][\x20-\xFF]{1,2}

演示:https://regex101.com/r/4Rhv2V/2/