我正在尝试向AWS EventBridge提交一个JSON (草案-04),但是我的pattern值出现了一个错误,即:
pattern: "^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\x{00a1}-\x{ffff}][a-z0-9\x{00a1}-\x{ffff}_-]{0,62})?[a-z0-9\x{00a1}-\x{ffff}]\.)+(?:[a-z\x{00a1}-\x{ffff}]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$%iuS"(我从已建立的regex模式中获取字符串值,以验证URL的- https://gist.github.com/dperini/729294 )
当我尝试提交这个文件时,我从EventBridge中得到一个错误
Failed to validate schema due to following error(s): [Does not match format 'regex']我尝试用双反斜杠(\)替换所有反斜杠(\\),并尝试用\u替换\x。我还是会犯同样的错误。有人能帮忙吗?
发布于 2022-08-18 17:18:15
你尝试过的都会成功的。我猜你错过了一个需要成为\的\\。
下面是您尝试过的步骤,regex成功地为我编译了。
"pattern": "^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$%iuS"发布于 2022-08-22 07:54:34
我已经解决了其中的一些问题,但我认为用这种方法解决这个问题需要花费我很多时间。我将使用另一种方法,而根本不使用pattern关键字。我学到的是:
[a-z\\u00a1-\\uffff],而不是[a-z\x{00a1}-\x{ffff}] ( @Jason的信用) u00a1-uffff告诉regex包含所有unicode字符 (从倒排感叹号“”及以后)。我在https://regex101.com/r/mV0iS3/1上进行了测试,发现\x表示法被拒绝了。使用花括号尝试\u{xxxx}也会被拒绝。https://stackoverflow.com/questions/73406552
复制相似问题