求助:在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
相关产品推荐
相关产品推荐

