gpt4 book ai didi

java - 将正则表达式与replaceAll一起使用

转载 作者:行者123 更新时间:2023-12-02 10:58:39 25 4
gpt4 key购买 nike

我有这个正则表达式,用于验证电话号码。

^\\(?(\\d{2,3})\\)?[-(). ]?(\\d{2,3})[-(). ]?(\\d{4})$

(是的,我知道它并不完美,但我不在乎)。我只是用它来用另一个字符串替换电话号码,例如 ### 来删除敏感信息。所以误报是可以的。

当我搜索的字符串只是电话号码时,它会起作用。这有效:

String PHONE_PATTERN = "^\\(?(\\d{2,3})\\)?[-(). ]?(\\d{2,3})[-(). ]?(\\d{4})$";
String phone = "123-123-1234";
System.out.println(s.replaceAll(PHONE_PATTERN, "###")); //prints '###'

但是对于周围的文本它不起作用:

String PHONE_PATTERN = "^\\(?(\\d{2,3})\\)?[-(). ]?(\\d{2,3})[-(). ]?(\\d{4})$";
String phone = "some other text 123-123-1234";
System.out.println(s.replaceAll(PHONE_PATTERN, "###"));

By 不起作用,我的意思是文本打印不变。

我需要对正则表达式进行哪些更改才能使其正常工作,以便打印第二个示例

some other text ###

最佳答案

删除表达式开头和结尾的 ^$。这些字符与字符串的开头和结尾匹配,但您不希望电话号码成为字符串的唯一内容,因此您应该删除它们。

关于java - 将正则表达式与replaceAll一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24314471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com