1

我想在使用 ploneformgen 1.7 创建的表单中使用正则表达式。我正在使用克隆 4.1。在文本字段的自定义验证中。

如何使用正则表达式?

我尝试了以下方法:

python: import re; test(value==re.search(r'[123]'), False, 'Needs to be number 1 or 2 or 3')

但它给了我错误,因此无法验证。我想要的值应该是 1 或 2 或 3。我可以将表达式用作

python: test(value=='1' or value=='2' or value=='3', False, 'Needs to be number 1 or 2 or 3')

但我想使用正则表达式。请指导。

4

3 回答 3

4

您可以在 through-the-web 脚本、TALES "python:" 表达式、PFG 覆盖和 PFG 脚本适配器中使用的包和类型集仅限于受限 Python 中可用的那些。受限制的 Python 在它提供的模块和类型方面故意非常保守。

您可以使用包含在您的 egg 列表中的 Python 包中的显式“允许”声明来扩展列表。github 集体中提供了此类包的示例,其中包括我发现在 PloneFormGen 中特别有用的几个模块和类型,包括 re.

您仍然无法在 TALES 表达式中“导入 re”,但您将能够在 TTW 脚本中使用 re,该脚本可用作 PFG 验证器。

于 2013-02-05T16:20:55.993 回答
3

根据http://docs.zope.org/zope2/zope2book/ScriptingZope.html,您不能在 TALES 中使用正则表达式,因为受限 Python 禁止使用正则表达式。

于 2013-02-05T06:03:29.903 回答
-1

搜索方法实际上需要 2 个参数。

你应该使用这种方式:import re; test(re.search(r'[123]', value), False, 'Needs to be number 1 or 2 or 3')

于 2013-02-05T05:59:43.107 回答