Java如何像我预期的那样使用正则表达式掩码numberic

Java如何像我预期的那样使用正则表达式掩码numberic,java,regex,Java,Regex,建议我有以下两个价值观: 123456789 123456789111 String.replaceAll是否可以执行以下操作 123456789 -> XXXXXX789 123456789111 -> XXXXXXXXX111 对于掩码,最后三个数字,但将其他字符替换为X?请注明样品中X的数量 提前感谢。是的,replaceAll函数将完成此工作 String s1 = "1

建议我有以下两个价值观:

       123456789
       123456789111
String.replaceAll是否可以执行以下操作

       123456789           ->    XXXXXX789
       123456789111        ->    XXXXXXXXX111
对于掩码,最后三个数字,但将其他字符替换为X?请注明样品中X的数量


提前感谢。

是的,replaceAll函数将完成此工作

String s1 = "123456789";
String s2 = "123456789111";
System.out.println(s1.replaceAll("\\d(?=\\d{3})", "X"));
System.out.println(s2.replaceAll("\\d(?=\\d{3})", "X"));
输出:

XXXXXX789
XXXXXXXXX111
XXXXXX789
XXXXXXXXX111
说明:

XXXXXX789
XXXXXXXXX111
XXXXXX789
XXXXXXXXX111
  • \\d(?=\\d{3})
    仅当数字后跟三位数字时才匹配该数字。所以它在最后三位失败了。最后,所有匹配的数字都被字母
    X

是,replaceAll函数将完成此任务

String s1 = "123456789";
String s2 = "123456789111";
System.out.println(s1.replaceAll("\\d(?=\\d{3})", "X"));
System.out.println(s2.replaceAll("\\d(?=\\d{3})", "X"));
输出:

XXXXXX789
XXXXXXXXX111
XXXXXX789
XXXXXXXXX111
说明:

XXXXXX789
XXXXXXXXX111
XXXXXX789
XXXXXXXXX111
  • \\d(?=\\d{3})
    仅当数字后跟三位数字时才匹配该数字。所以它在最后三位失败了。最后,所有匹配的数字都被字母
    X
尝试此操作。替换为
X
。放置标志
m
g
。请参阅演示

尝试此操作。替换为
X
。放置标志
m
g
。请参阅演示

是的,您可以:

public static void main(String[] args) {
    String s1 = "123456789";
    String s2 = "123456789111";
    String regex = "\\d(?=\\d{3})"; // each digit followed by exactly 3 digits should be replaced by X
    System.out.println(s1.replaceAll(regex, "X"));
    System.out.println(s2.replaceAll(regex, "X"));

}
O/p:

是的,你可以:

public static void main(String[] args) {
    String s1 = "123456789";
    String s2 = "123456789111";
    String regex = "\\d(?=\\d{3})"; // each digit followed by exactly 3 digits should be replaced by X
    System.out.println(s1.replaceAll(regex, "X"));
    System.out.println(s2.replaceAll(regex, "X"));

}
O/p: