作业帮 > 综合 > 作业

正则表达式,不匹配以#开头的5到8位的数字,只匹配5到8位的纯粹的,连续的数字,怎么写?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/16 02:02:59
正则表达式,不匹配以#开头的5到8位的数字,只匹配5到8位的纯粹的,连续的数字,怎么写?
例如:#3132132fyffafhjht发送发送放大4343244hh24ff#32323133323213123123
要求只匹配“4343244”这一段数字,排除两头以#开头的
js:

var reg = /[^#\d](\d{5,8})(?=[^\d])/g;
var str = "#3132132fyffafhjht发送发送放大4343244hh24ff#32323133323213123123";
str.match(reg)[0].replace(/\D/,'');

java:
String str = "#3132132fyffafhjht发送发送放大4343244hh24ff#32323133323213123123";
String reg = "(?<!(#|\\d))\\d{5,8}(?=[^\\d])";
Pattern pattern = Pattern.compile (reg);
Matcher matcher = pattern.matcher (str);
while (matcher.find ())
{
    System.out.println (matcher.group ());
}
再问: 虽然不太懂,但功能基本上实现了。只是还有一点点瑕疵。就是匹配的不是纯数字,还带了数字前边的一个文字
再答: 如果是js的话,没有前向声明,java有,所以办得到