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

问题描述:

正则表达式,不匹配以#开头的5到8位的数字,只匹配5到8位的纯粹的,连续的数字,怎么写?
例如:#3132132fyffafhjht发送发送放大4343244hh24ff#32323133323213123123
要求只匹配“4343244”这一段数字,排除两头以#开头的
1个回答 分类:综合 2014-10-22

问题解答:

我来补答
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有,所以办得到
 
 
展开全文阅读
剩余:2000
下一页:老师第一十三题