【发布时间】:2018-11-09 20:40:52
【问题描述】:
你能告诉我为什么我的情况总是正确的?我正在尝试使用正则表达式验证我的价值。我的条件很少
- 名称不应包含测试“文本”
- 名称不应包含三个连续字符,例如“abc”、“pqr”、“xyz”
- 名称不应包含三个相同的字符,例如“aaa”、“ccc”、“zzz”
我喜欢这个
https://jsfiddle.net/aoerLqkz/2/
var val = 'ab dd'
if (/test|[^a-z]|(.)\1\1|abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz/i.test(val)) {
alert( 'match')
} else {
alert( 'false')
}
我用以下字符串测试了我的代码并得到了意想不到的结果
- 输入字符串 "abc" : 输出良好 :: "match"
- 输入字符串 "aaa" : 输出正常 :: "match"
-
输入字符串 "aa a" : **output ** :: "match" 为什么匹配?它们之间有空格为什么它匹配????
输入字符串 "sa c" : **output ** :: "match" 为什么是 match ??它们之间有不同的字符串和空格????
【问题讨论】:
-
@Martijn — 那是不是 a-z
-
“测试文本”还是“文本测试”?
-
为什么不会
"aa a"匹配?您的模式(第二个分支)说“任何非字母”,空格不是字母。如果你输入"aa1a"也是一样的——第一个不是字母,因此是匹配的。 -
没有法律规定你必须编写一个巨大的正则表达式。如果您使用三个较小的正则表达式,这将更容易编写和理解。
标签: javascript regex