regex - cvc-pattern-valid:相对于模式,值不是 facet-valid
问题描述
这是整个错误:
cvc-pattern-valid: Value '03151364512' is not facet-valid with respect to pattern '((((\+011)|(011))[-]?)?(599)((416)|(717)|(318))[0-9]{4})|(((085)|(088))[-]?[0-9]{7})([,][1-9][0-9]{1,8})?|((((\+31)|(0)|(0031))[1-9][0-9]{2})[-]?([1-9][0-9]{5}))([,][1-9][0-9]{1,8})?|((((\+31)|(0)|(0031))[1-9][0-9])[-]?([1-9][0-9]{6}))([,][1-9][0-9]{1,8})?|(((14)[-]?)(0)([1-9][0-9]{1,2}))|((((\+31)|(0)|(0031))6){1}[-]?[1-9]{1}[0-9]{7})|\+(1\d{4,14}|2[078]\d{3,13}|3[0-469]\d{3,13}|4[013-9]\d{3,13}|5[1-9]\d{3,13}|6[0-6]\d{3,13}|7\d{4,14}|8[1-469]\d{3,13}|9[0-58]\d{3,13}|[2-9]\d{4,14})'
我用过的每个在线检查器都说这个值应该是有效的。有任何想法吗?
解决方案
XSD 模式应该匹配整个字符串。
因此,模式与预期的不匹配03151364512
,因为最后一个2
不匹配。
您应该修复 Angular 验证以禁止使用部分字符串匹配
/^(?:(?:\+?011-?)?599(?:416|717|318)[0-9]{4}|08[58]-?[0-9]{7}(?:,[1-9][0-9]{1,8})?|(?:\+31|0|0031)[1-9][0-9]{2}-?[1-9][0-9]{5}(?:,[1-9][0-9]{1,8})?|(?:\+31|0|0031)[1-9][0-9]-?[1-9][0-9]{6}(?:,[1-9][0-9]{1,8})?|14-?0[1-9][0-9]{1,2}|(?:\+31|0|0031)6-?[1-9][0-9]{7}|\+(?:1\d{4,14}|2[078]\d{3,13}|3[0-469]\d{3,13}|4[013-9]\d{3,13}|5[1-9]\d{3,13}|6[0-6]\d{3,13}|7\d{4,14}|8[1-469]\d{3,13}|9[0-58]\d{3,13}|[2-9]\d{4,14}))$/
请注意正则表达式文字符号,不应使用任何引号括起来。
实际上,在 JavaScript 中,您可以使用非捕获组 ( (?:...)
) 而不是捕获组 ( (...)
),以节省一些计算资源。
推荐阅读
- javascript - 如何在集合中获取数据 Firebase 集合
- reactjs - 在 React 中自动生成 ID
- pandas - 熊猫数据框每行强制执行
- firebase - 从云存储中获取一些元数据到云功能
- python - 将我的 selenium 可执行文件移动到另一台计算机时,chrome 驱动程序不在路径中
- express - 快速会话中的存储能力?
- c# - 如何制作强类型的 AuthorizeAttribute
- python - Keras model.predict() 花费了不合理的时间
- hadoop - Hadoop:Redcuer 没有发出正确的计算
- r - R数据集从长到宽 - 在特定条件下