Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 结尾的字符不匹配_Ruby_Regex - Fatal编程技术网

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或更多。根据您的要求,您可以使用任何。