You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:在AEM Designer中编写符合规则的JS正则表达式

问题描述

在AEM Designer中使用JavaScript编写正则表达式时遇到匹配问题,需求如下:

  • 输入必须以5位任意数字开头,后跟单个空格
  • 后续可包含任意文本与空格的组合
  • 结尾必须为字母,不允许以句号、空格或特殊字符收尾

目前仅实现了开头5位数字加空格的匹配,无法支持文本间空格及结尾校验,尝试多个正则均未成功。当前使用的代码:

var pattern = new RegExp("^([0-9]{5}).([A-Z]+)$");
var result = Page1.Section1.MOSID.rawValue

if (pattern.test(result)) {
    xfa.host.setFocus(NextField);
} else {
    xfa.host.messageBox("Incorrect formatting, please follow format shown in caption");
}

尝试过的正则表达式:

"^([0-9]{5}).[A-Z]([.A-Z]*)$"
"^([0-9]{5}).([A-Z])([.A-Z]*)?$"
"^([0-9]{5})\s([A-Z])(\s\w+)*$"
"^([0-9]{5})\s([A-Z])+( \w+)*$"
解决方案

正确的正则表达式

根据需求,可使用以下正则(支持大小写字母、文本间空格,确保结尾为字母):

var pattern = new RegExp("^[0-9]{5}\\s[\\w\\s]*[A-Za-z]$");

如果不需要支持下划线,可调整为:

var pattern = new RegExp("^[0-9]{5}\\s[A-Za-z0-9\\s]*[A-Za-z]$");

正则解析

  • ^[0-9]{5}:强制匹配开头的5位数字
  • \\s:匹配数字后的单个空格(字符串中需用双反斜杠转义)
  • [\\w\\s]*:匹配任意数量的字母、数字、下划线和空格,满足文本间空格需求;替换为[A-Za-z0-9\\s]*可去掉下划线支持
  • [A-Za-z]$:强制结尾为大小写字母,排除句号、空格、特殊字符等非法结尾

修改后的完整代码

var pattern = new RegExp("^[0-9]{5}\\s[\\w\\s]*[A-Za-z]$");
var result = Page1.Section1.MOSID.rawValue;

if (pattern.test(result)) {
    xfa.host.setFocus(NextField);
} else {
    xfa.host.messageBox("格式不正确,请按照标题所示格式输入");
}

注意事项

  • 若仅允许大写字母结尾,将[A-Za-z]$改为[A-Z]$即可
  • 如需限制中间文本长度,可将*替换为{min,max}(例如{0,50}表示0到50个字符)

内容的提问来源于stack exchange,提问作者JustinD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 00:07:31