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
在java中使用regualr表达式的掩码字符串_Java_Regex - Fatal编程技术网

在java中使用regualr表达式的掩码字符串

在java中使用regualr表达式的掩码字符串,java,regex,Java,Regex,我需要一个使用正则表达式屏蔽字符串的代码。 需要屏蔽长度大于或等于4的数字 public class Mask{ String data="+918033667777,,,2,,,4937015106932345,,,1,3,,,,467298364729038,,24789438292,,7979,,,,,,,1,,1"; public static void main(String[] args){ data = data.replaceAll("(?<=\\D)

我需要一个使用正则表达式屏蔽字符串的代码。 需要屏蔽长度大于或等于4的数字

public class Mask{
String data="+918033667777,,,2,,,4937015106932345,,,1,3,,,,467298364729038,,24789438292,,7979,,,,,,,1,,1";
    public static void main(String[] args){
       data = data.replaceAll("(?<=\\D)\\d{4}(?=\\D)", "****").replaceAll("\\d{12}(?=\\d{4})", "************");
       System.out.println(data);
    }
}
公共类掩码{
字符串数据=“+91803366777、、2、、493701510693245、、1、3、、467298364729038、、24789438292、、7979、、、、、、、1、、1”;
公共静态void main(字符串[]args){
data=data.replaceAll(“(?尝试使用:

(?<=,)\d(?=\d{3,})|(?!\A)\G\d
输出:

+91803366777、、2、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、


data
dialSequence
是一样的吗?@NicholasRobinson是的,它们是一样的,但是
+91803366777
也是一个长度超过4的数字。我得到了
+*********************,,,,2,,,,,*********************,,,,,1,,,,,,,,,*********,***,***,***,***,***,***,***,***,***,***,***,***,***,***,***,***,***,***,***,***,***,***,***,***,***我不会用
*
屏蔽每个字符,但每个数字都有固定数量的
*
@NicholasRobinson,甚至得到相同的输出。我不想屏蔽第一组数字。只需要在,(逗号)之后屏蔽。如何跳过这些数字(+91803366777)小小的简化Java版本:
replaceAll(“(?@Pshemo但它也会匹配第一个数字,因为
\D
也匹配
+
@Pshemo我不想屏蔽第一组数字(+91803366777)。只需要在逗号(,)@Archana后面屏蔽数字在“屏蔽长度大于或等于4的数字”中没有任何关于
(或者我错过了吗?。@Stribizev我补充道(?!\A)因为如果不是
+
,它将匹配第一个数字,所以我假设OP不想匹配第一个数字
public class Test{

    public static void main(String[] args){
        String data="+918033667777,,,2,,,4937015106932345,,,1,3,,,,467298364729038,,24789438292,,7979,,,,,,,1,,1";
        data = data.replaceAll("(?<=,)\\d(?=\\d{3,})|(?!\\A)\\G\\d", "*");
        System.out.println(data);
    }
}