如何使用正则表达式进行部分替换?

cur*_*boy 0 ruby regex

我在Ruby中有一个电子邮件地址,我需要通过用星号替换除前3个和后3个之外的所有字符进行混淆.换句话说:如果输入"abcd.ef@example.com",则输出应为"abc*************com"

Ruby有一个gsub方法,它可以用给定的字符串替换所有出现的模式.我应该写什么正则表达式匹配所有要用星号替换的字符?换句话说,一个模式匹配最后三个中前三个NOR中所有字符都是NEITHER?

spi*_*ann 5

我会这样做没有正则表达式:

email = 'abcd.ef@example.com'

email[3..-4] = '*' * email[3..-4].length

email # => "abc*************com"
Run Code Online (Sandbox Code Playgroud)