我正在尝试检查字符串是否包含至少一个小写字母,大写字母和数字,但不包含标点符号(包括空格)。
例如
4aBc8Fk3
应匹配4aBc 8.;3
不匹配我尝试了以下内容,但它匹配空格:
^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).{6,}[^[:punct:]]$
如何不匹配包含空格的标点符号的字符串?
答案 0 :(得分:2)
根据我的理解,你在那里得到的正则表达式会做以下事情(我不熟悉ruby变种,对于正则表达式我自己还是很新的;这会给你一个想法,但可能不是100 %正确):
--a
--aA
--aA0
--aA0-
[^[:punct:]]
还是[^:punct:]
),例如--aA0-c
现在,前瞻也会允许不同的出现顺序,例如: 0---Aa
,只要字符串包含任何字符,后跟他们要查找的内容。
你可能想要的是^[a-zA-Z0-9]{6,}$
,即至少六个字符,字符是字母和数字(例如,这也允许aaaaaa
)。
也许尝试^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]{6,}$
确保每个群组都存在,并且只获取字母数字字符(至少六个)。
我总是使用像http://www.regexpal.com/这样的工具慢慢建立我的正则表达式,看看我哪里出错,解构“坏”正则表达式,直到我找到一个“好”的正则表达式,然后慢慢添加到它试。
希望有所帮助。 :)
P.S。:我还有点不清楚你想要匹配多少个字符,即字符串是否固定长度......?