我正在尝试在 JS 中创建一个简单的正则表达式,但无论我尝试多少次,我似乎都无法让它工作。
在 AEM Designer 中使用 JS
我正在寻找正则表达式来比较用户条目:
必须以5位数字开头(任意组合,无特定模式)
后跟一个空格
然后有文本和空格的任意组合 I.E. CAR 或 CAR IS 或 CAR IS SUPER FAST 或 CARISSUPER FAST。只是寻找文本,单个空格,文本等。但是,它不允许文本以字母以外的任何内容结尾(没有句点或额外的空格或特殊字符)
到目前为止,我已经弄清楚了 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");
}
这让我走到了那里,但它只允许 1 行连续的文本,并且不允许中间有空格,也不考虑行尾。
我一直在尝试以下失败
("^([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+)*$")
我觉得我在围绕解决方案跳舞,但似乎不太合拍。
任何帮助将不胜感激。
^\d{5}\s[A-Z\s]*[A-Z]$
^
= 字符串的开头\d{5}
= 5 位数\s
= 单个空格[A-Z\s]*
= 任何字母和空格序列,可能为空[A-Z]
= 一个字母,所以不能以空格结尾$
= 字符串结尾不确定您在寻找什么,但是 JavaScript 中的一个简单正则表达式匹配一个 5 位数字后跟任意数量的文本,包括空格,如下所示:
/\d{5}\s*.*/
让我们分解一下:
/\d{5}
正好匹配五个数字 (0-9)。\s*
匹配任意数量的空格(空格、制表符等)。.*
匹配 5 位数字后的任意数量的文本(包括空格)。此正则表达式的可能成功匹配:
正则表达式
/\d{5}\s*.*/
也将匹配字符串“99999 AAA AAA”。
更新的表达式:
/^\d{5} [a-zA-Z\s]*[a-zA-Z]$/
,该表达式将匹配以 5 位数字开头,后跟一个空格,以一个字母结尾,中间是字母和空格的任意组合的字符串。
你的脚本有什么问题
("^([0-9]{5}).([A-Z]+)$")
:
.
周围的文字字符。.
将只匹配单个字符,包括空格和其他非大写字母的字符。正确的解决方案:
/^[0-9]{5}\s*[A-Z\s]+$/
更新的解决方案强制使用空间后:
/^\d{5}\s+[A-Z\s]+$/i