为什么这个正则表达式
/^[^-_]*([A-Za-z0-9]{3,})+[-_]?[^-_]*$/i
匹配此字符串?
,abc,,.
它清楚地表明字符串应该只包含
正则表达式不应允许除A-z
,0-9
和- or _
之外的任何其他字符,但它允许使用它们。
提前致谢
答案 0 :(得分:5)
-
或_
(匹配,
)abc
)-
或_
(无匹配)-
或_
(匹配,,.
)你的意思是:
/^[a-z0-9]{3,}(?:[-_][12]+)?$/i
更正,我误解了你的第3点"。
/^[a-z0-9]{3,}(?:[-_][a-z0-9]{3,})*$/i
答案 1 :(得分:1)
[^-_]*
表示不是-
或_
,,
和,,.
满足该条件的0个或多个字符。
答案 2 :(得分:1)
[^-_]*
将与第一个逗号匹配,([A-Za-z0-9]{3,})+
将与abc
匹配,[-_]?
将不匹配任何内容,[^-_]*
将匹配最后2个逗号和点。
请注意,使用i
标记可以使用([A-Z0-9]{3,})+
或([a-z0-9]{3,})+
以及当前的正则表达式。
如果你想:
然后我会建议:
/^(?:[a-z]{2}[-_]?)+[a-z]$/i
如果通过'字母'你真的想要字母和数字,然后我会建议:
/^(?:[a-z0-9]{2}[-_]?)+[a-z0-9]$/i
答案 3 :(得分:1)
[^-_]*
不是“不 - 或_”而是“所有除了 - 或_” 因为你的表达的其他部分可能都缺席......
[^-_]*
让你的Regexp与字符串匹配。