已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
昨天关门了。
Improve this question
我试图验证我的API头是否在PascalCase中,为此,我使用以下正则表达式:
^([A-Z][a-z]*)(-[A-Z0-9][a-z0-9]*)*$
我有一个用例,其中API包含一些PascalCase中没有的关键字,我必须在验证头时忽略这些关键字,例如:X-CUSAPI-Trace-Id使用上述正则表达式时,我希望忽略X-CUSAPI- part,然后对Trace-Id应用验证。我尝试使用以下正则表达式,但它不起作用。
^(?!.*X-CUSAPI-).([A-Z][a-z]*)(-[A-Z0-9][a-z0-9]*)*$
添加API规范示例:
{
"in": "header",
"name": "X-CUSAPI-Trace-Id",
"description": "TraceID",
"required": false,
"schema": {
"type": "string"
}
}
Spotlight spectral工具,帮助解析JSON并查找名称,以便应用正则表达式验证其是否为PascalCase:
header-should-pascal-case:
message: "Request and Response HTTP Header should be pascal-case, separated by hyphens Example: PascalCase-Header"
description: SHOULD prefer hyphenated-pascal-case for HTTP header fields
severity: error
given: $.paths.*.*.parameters[?(@.in=='header')].name
then:
function: pattern
functionOptions:
match: ^.*?(?:X-CUSAPI-)?((?:[A-Z][a-z]+)+(?:-(?:[A-Z0-9][a-z0-9]+)+))\b
1条答案
按热度按时间monwx1rj1#
您所使用的正则表达式的问题是负前瞻Assert的位置不正确。您可以修改您的正则表达式,通过将负前瞻Assert放置在字符串锚(^)的开头来获得所需的结果,如下所示:
^(?!.X-CUSAPI-)([A-Z][a-z])(-[A-Z0-9][a-Z0-9])$
这将忽略任何包含“X-CUSAPI-”的字符串,然后使用PascalCase验证模式匹配剩余的字符串。