Ruby 正则表达式不正确匹配标点(包括空格)
我试图检查字符串是否包含至少一个小写字母、大写字母和数字,但不包含标点符号(包括空格) 比如说Ruby 正则表达式不正确匹配标点(包括空格),ruby,regex,Ruby,Regex,我试图检查字符串是否包含至少一个小写字母、大写字母和数字,但不包含标点符号(包括空格) 比如说 4aBc8Fk3应匹配 4abc8。;3不应匹配 我尝试了以下操作,但它与空格匹配: ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).{6,}[^[:punct:]]$ 有没有办法不匹配包含标点符号(包括空格)的字符串 据我所知,您在那里得到的正则表达式可以执行以下操作(我不熟悉ruby变体,而且我自己对regex还是很陌生;这会给您一个想法,但可能不是100%正确): 转
应匹配4aBc8Fk3
不应匹配4abc8。;3
^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).{6,}[^[:punct:]]$
有没有办法不匹配包含标点符号(包括空格)的字符串 据我所知,您在那里得到的正则表达式可以执行以下操作(我不熟悉ruby变体,而且我自己对regex还是很陌生;这会给您一个想法,但可能不是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,}$
以确保每个组都存在,并且只获取字母数字字符(至少六个)
我总是使用一个工具,比如慢慢地建立我的正则表达式,看看哪里出了问题,解构一个“坏”正则表达式,直到我得到一个“好”正则表达式,然后再慢慢地添加它
希望有帮助。:)
注意:我仍然有点不清楚您希望总共匹配多少个字符,即字符串是否为固定长度…?据我所知,您在那里得到的正则表达式执行以下操作(我不熟悉ruby的种类,我自己对regex还是很陌生;这会给你一个想法,但可能不是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,}$
以确保每个组都存在,并且只获取字母数字字符(至少六个)
我总是使用一个工具,比如慢慢地建立我的正则表达式,看看哪里出了问题,解构一个“坏”正则表达式,直到我得到一个“好”正则表达式,然后再慢慢地添加它
希望有帮助。:)
注意:我仍然有点不清楚您希望总共匹配多少个字符,即字符串是否为固定长度…?完整要求是:至少六个字符长,包含小写字母,包含大写字母,包含数字。但在我的版本中,它接受空格和标点符号,因此,根据这一点,在您的情况下,POSIX字符类可能是个坏主意,因为它们是由区域设置驱动的,
[:punct:]
可能不检查空格:至少六个字母数字字符,或者至少六个字符,只要它们既不是标点符号也不是空格?例如,€
有效吗?至少有六个字母数字字符。顺便说一下,根据我在bash上使用regex的经验,环顾四周是非常昂贵的操作。通过将几个正则表达式管道(嵌套)在一起,事情通常会变得更快…:)完整的要求是:至少六个字符长,包含一个小写字母,包含一个大写字母,包含一个数字。但在我的版本中,它接受空格和标点符号,因此,根据这一点,在您的情况下,POSIX字符类可能是个坏主意,因为它们是由区域设置驱动的,[:punct:]
可能不检查空格:至少六个字母数字字符,或者至少六个字符,只要它们既不是标点符号也不是空格?例如,€
有效吗?至少有六个字母数字字符。顺便说一下,根据我在bash上使用regex的经验,环顾四周是非常昂贵的操作。通过将几个正则表达式管道(嵌套)在一起,事情通常会变得更快…:)