** Si vous souhaitez masquer avec un nombre fixe de symboles *
, vous pouvez Ysé
'[email protected]'.sub(/\A(..).*@.*(..)\z/, '\1****@****\2')
# => lo****@****om
Voir la Ruby demo.
Ici,
\A
- début de l'ancre de chaîne
(..)
- Groupe 1: 2 premiers caractères
.*@.*
- tout 0+ CHARS autres que les caractères de saut de ligne autant que possible jusqu'à la dernier @
suivi d'un autre jeu de caractères 0+ autres que ceux de saut de ligne
(..)
- Groupe 2: 2 derniers caractères
\z
- fin de la chaîne.
Le \1
dans la chaîne replacment fait référence à la valeur maintenue dans le groupe 1, et \2
référence à la valeur dans le groupe 2.
Si vous souhaitez masquer les caractères existants tout en gardant leur numéro, vous pourriez envisager une approche pour capturer les parties de la chaîne que vous devez conserver ou traiter et manipuler les captures à l'intérieur d'un bloc sub
:
'[email protected]'.sub(/\A(..)(.*)@(.*)(..)\z/) {
$1 + "*"*$2.length + "@" + "*"*$3.length + $4
}
# => lo*********@*******om
Voir la Ruby demo
Détails
\A
- début de la chaîne
(..)
- Groupe 1 capturant tous les 2 caractères
(.*)
- Groupe 2 capturant tout autant 0+ caractères que possible jusqu'à la dernière. ...
@
- @
char
(.*)
- Groupe 3 capturant tout autant 0+ caractères que possible jusqu'à la
(..)
- Groupe 4: deux chars
\z
- fin de chaîne.
Notez que l'intérieur du bloc, $1
contient la valeur du Groupe 1, Groupe $2
maintient la valeur 2, et ainsi de suite.
Peut-être que [ce] (https://ideone.com/yquKpO) pourrait Aidez-moi. –
C'est parfait, merci! – bochen421