我试图执行以下代码:
var pwd = "CURRENT DATE - 23 DAYS";
var Exp = /^([CURRENT]{7}[ ]{1}[DATE]{4}[ ]{1}[-]{1}[ ]{1}[\d]+[ ]{1}[DAYS]{4})$/i;
var Exp2 = /^([CURRENT]{7}[ ]{1}[DATE]{4}[ ]{1}[-]{1}[ ]{1}[\d]+[ ]{1}[MONTHS]{6})$/i;
if (pwd.match(Exp) || pwd.match(Exp2)) {
alert("SUCCESS");
} else {
alert("ERROR");
}
它按预期工作......但是虽然我已经给出了第一个单词CURRENT
并提到了7个字符,但如果我给出错误的单词CUUUENT
而不是CURRENT
,它会接受。我该如何解决这个问题?
答案 0 :(得分:4)
子表达式[CURRENT]{7}
表示重复设置[CURRENT]中的任何字母七次。我认为你打算打算匹配字符串CURRENT。那只是CURRENT
。
你的许多正则表达式都指定了相同的东西。 /^CURRENT DATE - [0-9]+ (DAYS|MONTHS)$/
应该与您拥有的相匹配。
答案 1 :(得分:2)
使用[CURRENT]{7}
匹配[]
中的每个字符,以及其中的7个字符。如果您想匹配整个单词,请使用(CURRENT)
(CURRENT DATE - \d{1} DAYS)
请注意,当你写完整个单词时,它与写入时的kt完全匹配。但是[THIS]{4}
会抓取[]
之间ITHS
或HHHT
之间的4个字母的任意组合。