社区
Java SE
帖子详情
这个正则表达式该怎么写?
zoeg
2005-10-14 10:29:08
12345678901234567890
如上是一个银行帐户号,其位数不确定,但一定长于8位,小于20位;全部是数字;
我的目标是用一个(只用一个replaceAll)正则表达式替换后,使得只保留首尾的4位数字,其他数字全用*号覆盖,如上的结果应是:
1234************7890
...全文
248
20
打赏
收藏
这个正则表达式该怎么写?
12345678901234567890 如上是一个银行帐户号,其位数不确定,但一定长于8位,小于20位;全部是数字; 我的目标是用一个(只用一个replaceAll)正则表达式替换后,使得只保留首尾的4位数字,其他数字全用*号覆盖,如上的结果应是: 1234************7890
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zoeg
2005-10-17
打赏
举报
回复
了解
低调的小青蛙
2005-10-17
打赏
举报
回复
zoeg(沉香) 兄:
\d(?=xxxxx) 正向匹配xxxxx才捕获 \d
(?<=xxxxx)\d 反向..................
\d(?!xxxxx) 正向不可以是xxxxx才捕获 \d
(?<!xxxxx)\d 反向......................
这四个都表示“预查后不保留预查到的字符”,“<”的意思是“向左边”预查,否则是向“右”。
Mark_Chen
2005-10-17
打赏
举报
回复
顶
zoeg
2005-10-17
打赏
举报
回复
那个<号是否表示预后不保留预查到的字符直接略过到其后开始查找?
是否还有换成>号的用法?
低调的小青蛙
2005-10-17
打赏
举报
回复
\d(?=xxxxx) 正向匹配xxxxx才捕获 \d
(?<=xxxxx)\d 反向..................
\d(?!xxxxx) 正向不可以是xxxxx才捕获 \d
(?<!xxxxx)\d 反向......................
godhammer
2005-10-17
打赏
举报
回复
高手阿
正则表达式还是很有研究价值的
zoeg
2005-10-17
打赏
举报
回复
另外,正向预查是否还有其他的形式?能否说说!
zoeg
2005-10-17
打赏
举报
回复
sswater(水与争锋)
非常感谢,你写的正是我想要的,但我有一点不明白,左边的那个正向预查,多了一个“<”,这个该如何理解,还烦劳解释一下!
低调的小青蛙
2005-10-17
打赏
举报
回复
(?<=\d{4})\d(?=\d{4})
System.out.println("123456123456123457890".replaceAll("(?<=\\d{4})\\d(?=\\d{4})", "*"));
shkirin
2005-10-17
打赏
举报
回复
楼上的应该没什么问题
laughsmile
2005-10-17
打赏
举报
回复
测试通过,一句话完成:
String str = "1234567890";
System.out.println(str.replaceAll("^(\\d{4})(.*)(\\d{4})$","$1"+(str.substring(0,str.length()-8).replaceAll(".*","*"))+"$3"));
zoeg
2005-10-17
打赏
举报
回复
哪位大哥帮忙顶一顶啊
zoeg
2005-10-14
打赏
举报
回复
我不是说代码量多,而是你使用了str.length()-8来生成正则式这个值不唯一,这样就会是多个正则式,我需要把这个正则式放在配置文件中,但我系统的框架只能支持我使用一个正则表达式去验证一类字符串!
jFresH_MaN
2005-10-14
打赏
举报
回复
正则表达式本来就是一个
上面的代码只所以那么多句,是因为替换的那个字符川需要动态的得到。
zoeg
2005-10-14
打赏
举报
回复
jFresH_MaN(Contributing to Eclipse)
首先,感谢你的帮助,我漏了一点,这是我在程序中对众多各类数据的格式化操作,或者说过滤吧,每种类型在配置文件中用一个正则表达式,而且只能用一个!
superslash
2005-10-14
打赏
举报
回复
顶
lyszjs
2005-10-14
打赏
举报
回复
楼上的思路是正确的,但偶也是新手,最后一句不怎么看的懂。哈哈。
majy
2005-10-14
打赏
举报
回复
吐血,这还是一句话吗?
jFresH_MaN
2005-10-14
打赏
举报
回复
String str="123488888888567890";
StringBuffer sb=new StringBuffer();
sb.append("$1");
for(int i=0;i<str.length()-8;i++) {
sb.append('*');
}
sb.append("$2");
System.out.println(str.replaceAll("^([\\d]{4})[\\d]{0,12}([\\d]{4})$",sb.toString()));
majy
2005-10-14
打赏
举报
回复
不太可能吧,raplaceAll的作用是把符合模式的串用一个定义的串来替换
你的要求中的模式是动态的,怎么替换,看楼下高手的吧
带你学会使用
正则表达式
内容简介:
正则表达式
,...这门课程可以非常快速的帮助大家理解
正则表达式
,以及掌握如何在实际场景中用到它。 课程大纲: 为了让大家快速系统了解
正则表达式
知识,我为您总结了思维导图,帮您梳理学习重点,建议收藏!
正则表达式
——“?”的几种用法
正则表达式
是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 “?”的几种用法 “?”元...
正则表达式
中?=等的简单使用
关于
正则表达式
?= ?: ?! 这些符号的用处 今天
写
web作业的时候遇到一个问题,如何使用提取url中请求的html和css,js的请求 于是我使用了
正则表达式
来做,前面一直没搞懂 ?= ?: ?!这几个符号是的用处,今天好像清晰了...
js
正则表达式
(?<=[\d])
正则表达式
学习笔记 目录
正则表达式
学习笔记 文章目录
正则表达式
:(?<=[\d]) 一、((?<=\d)\d{3})+ 二、千位分隔符 千位分隔符,其实就是数字中的逗号,每隔三位数加一个逗号,增强可读性 正则...
正则表达式
的基本用法
正则表达式
什么是
正则表达式
?
正则表达式
(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。
正则表达式
使用单个字符串来描述、匹配一系列匹配某个句法...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章