【问题标题】:CQ5 textfield validation with regex使用正则表达式进行 CQ5 文本字段验证
【发布时间】:2016-01-05 09:06:19
【问题描述】:

我有一个带有文本字段的简单 CQ 对话框。作者不知何故设法将非法字符粘贴到其中,最后两次是从 PowerPoint 文件复制的垂直标签 (VT)。 我玩弄了一些正则表达式并想出了以下内容以排除 SPACE 和 DEL 以下的任何内容:

/^[^\0-\x1F\x7F]*$/

遗憾的是,我无法真正测试垂直制表符,因为我无法在 regex101 上输入此字符。所以我用 TAB 试了一下,这似乎有效:https://regex101.com/r/yH0lN5/1

但是如果我在textfieldregex 属性中使用它,无论我输入什么,验证都会失败。知道我做错了什么吗?

白名单不是一个选项,因为我将来需要支持像中文这样的 Unicode 字符。

【问题讨论】:

  • 试试regex="/^[^\\x00-\\x1F\\x7F]*$/"
  • @stribizhev 谢谢,我自己也能想到。如果您将其发布为答案,我可以接受它

标签: regex extjs aem


【解决方案1】:

您应该将反斜杠加倍,以确保正则表达式引擎将它们视为文字反斜杠。

另外,我建议使用一致的表示法,并将\0 替换为\x00

regex="/^[^\\x00-\\x1F\\x7F]*$/"

这个正则表达式只匹配包含零个或多个字符(由于*)的完整字符串,而不是(由于使用了[^...]的否定字符类)从NUL到美国字符([\x00-\x1F])的字符串和一个 DEL 字符 (\x7F):

【讨论】:

  • 感谢您的扩展回答,是的,这就是我想要做的。也许我需要稍后添加一些其他字符,但目前我只想摆脱任何控制字符,即使它们可以像 HT、CR 和 LF 一样打印
  • 好。请注意,如果您打算添加文字\,则必须将其翻两番为\\\\。至于双引号,也许你可能不得不使用\\x22,但也许转义它就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-18
  • 1970-01-01
  • 2011-11-24
  • 2021-11-28
相关资源
最近更新 更多