Ruby 结尾的字符不匹配
我需要匹配字符串Ruby 结尾的字符不匹配,ruby,regex,Ruby,Regex,我需要匹配字符串str中的所有字母和数字 这是我的密码 str.match(/^(AB)(\d+)([A-Za-z][0-9])?/) 当str=AB57933A[sic]时,它只匹配AB57933,而不匹配数字后面附加的字符 如果我尝试使用str=AB57933AbC[sic],它只匹配AB57933;它只匹配最后一个数字,而不匹配其后的字符。按照您编写的方式: /^(AB)(\d+)([A-Za-z][0-9])/ 如果最后一个字符介于0和9之间,则可以根据需要将其替换为最后一个字母后的
str
中的所有字母和数字
这是我的密码
str.match(/^(AB)(\d+)([A-Za-z][0-9])?/)
当str=AB57933A
[sic]时,它只匹配AB57933
,而不匹配数字后面附加的字符
如果我尝试使用
str=AB57933AbC
[sic],它只匹配AB57933
;它只匹配最后一个数字,而不匹配其后的字符。按照您编写的方式:
/^(AB)(\d+)([A-Za-z][0-9])/
如果最后一个字符介于0
和9
之间,则可以根据需要将其替换为最后一个字母后的数字
/^(AB)(\d+)([A-Za-z]+)/
或者
/^(AB)(\d+)([A-Za-z0-9]+)/
如果AB57933AbC12
也被接受为有效输入
最后但并非最不重要的一点是,如果不使用反向引用,可以省略括号,因为不需要捕获组合并最后两个字符类:如果我这样做,我只从最后一个字符中获得1个字符,我的1个案例有效,但我的第二个案例无效。如果我提供这个,它只给我AB57933A。它与整个字符串不匹配,请参见下面我的答案!;-)希望它能帮助您添加
+
不是问题。不过,您的要求并不明确。如果需要匹配整个字符串,并且末尾的数字/字母是可选的,则需要/\A(AB)(\d+)([A-Za-z0-9]*)\z/
@ankur?
表示0或1,+
表示1或更多,*
表示0或更多。根据您的要求,您可以使用任何。