所以我用C#开发了一个使用Unity 3D的游戏。作为第一步,用户必须输入他的个人代码,该代码由5对组成,其中每对包含2个字符/数字(我分别验证字符和数字)。现在我想要达到的目标是,每输入一个信用卡号后,每隔一个字符就会出现一个减号,就像你在每第四个数字后一样。
示例:27-05-AB-CD-EF
所以现在我尝试使用正则表达式并将其用于前两个字母,但不知何故,正则表达式确实将减号视为一个字符,然后它经常无限地增加一个减号。我尝试了不同的版本,我认为我只允许字母和数字,但不知何故,它不起作用。
Regex.Replace(codeText, "([A-Za-z0-9][^-]){2}", "$0-");
有什么猜测可能做错了什么?
答案 0 :(得分:0)
尝试使用此表达式"([A-Za-z0-9]){2}(?!-)"
,其中(?!-)
是一个零宽度的负前瞻断言,如果您不知道是一个匹配但不是一部分的表达式匹配值。因此,此表达式匹配两个不是 - 。后跟的字符
https://www.regular-expressions.info/lookaround.html阅读此页面以获取更多信息