正则表达式不匹配以字符 e 开头的行

regex doesnt match the line starts with character e

我有这样一个正则表达式:

/^[^(\-.+\n|content|\n\-.+\-{2})](.+)/igm

这是示例输入:

------WebKitFormBoundaryKanSEkvcMamqayJY
Content-Disposition: form-data; name="fl"; filename="emty"
Content-Type: application/octet-stream

this is trial

------WebKitFormBoundaryKanSEkvcMamqayJY--

我想捕获除以下行之外的每一行:

------WebKitFormBoundaryKanSEkvcMamqayJY
    Content-Disposition: form-data; name="fl"; filename="emty"
    Content-Type: application/octet-stream  
------WebKitFormBoundaryKanSEkvcMamqayJY--

除非该行以以下字符开头,否则此正则表达式运行良好:

e,t,o,+,|,c,n,.

我想这是关于字符 ASCII 代码范围的问题,不知道如何解决这个问题。

恐怕您的正则表达式存在更大的问题。简而言之,[^(\-.+\n|content|\n\-.+\-{2})] 只匹配 1 个字符,因为它是一个字符 class.

假设您要忽略的行以超过 3 个 -Content- 开头,您可以使用以下正则表达式:

/^(?!-{3,}|content-).+$/igm

这是一个demo

为了防止出现前导空格,我会使用更安全的版本:

/^(?!\s*(?:-{3,}|content-)).+$/igm

最后,如果您需要匹配空行,请将 .+ 替换为 .*

这样就可以了:

/^(?!\s*(-|Content)).*/

demo