升级到 2.8 后数据欧芹模式正则表达式失败

Data-parsley-pattern Regex Failing After Upgrade to 2.8

我们为客户提供了一个小型门户应用程序,允许他们指定希望备份的目录。虽然我们有强大的检查来阻止后端的不良行为,但我们希望阻止他们在提交的表单中键入“..”作为路径名的一部分。

特别是第一个示例将被允许。其他示例将被表单验证拒绝。

web/wordpress.sitefiles/ ../../../etc/somefile web/../../../etc/somefile web/badname../

之前我们使用

data-parsley-pattern = '(?![\.]{2})'

这似乎做得很好。

我不确定我是否理解 Parsley 2.8 对正则表达式的更改。现在几乎没有任何东西会在我们的表单中验证..

我查看了 Parsley 文档并搜索了 Whosebug 和其他在线资源,但均无济于事。

使用 regextester.com 作为沙箱,下面的模式正是我们需要的。

'^((?![.]{2}).)*$'

然而,这似乎不能很好地转化为数据欧芹模式。在我们的表单中,上面的正则表达式匹配我们输入的任何内容。

它在文档中提到正则表达式模式现在已被锚定,所以我也尝试了

的简化版本

'((?![.]{2}).)*'

但这也匹配所有内容。

这似乎是一个如此简单的问题,但我认为我对正则表达式的有限了解让我误入歧途或导致我误解了 Parsley 文档。

任何指导将不胜感激。

您指定的模式 ((?![.]{2}).)* seems to work fine

所以,错误不在我的正则表达式中,而是我对 Parsley 在提交失败后如何响应表单的理解。

我认为这实际上是一个小错误,但行为可能是设计使然。

我有一个包含 5 个输入的表单。前两个已预先填充默认值。第三个为空,最后两个为整数,最小值为1,预填“0”。

第二个输入是我们不允许使用“..”的文本字段。它预先填充了值 "web/".

如果您尝试在页面加载后提交表单而不修改内容,则顶部的两个字段显示为绿色,第三个为空,底部的两个整数标记为红色。

现在,如果您将第二个框中的 "web/" 更改为 "web/..",该字段将保持绿色。它不会警告无效匹配。

如果您将红色整数更改为有效范围,它们将变为绿色,如果您将它们更改为无效数字,它们将变为红色。

似乎只有当我在 "web/" 字段中使用无效值点击提交按钮时,当我将字符串更改为 valid/invalid 值时,该字段才会开始动态报告。

当然,如果我点击提交,它会在所有字段上正确验证。所以我的错误是依靠字段颜色来测试我的正则表达式。