求一个正则表达式

tanguang_honesty 2014-04-01 05:26:15
要求如下:
以32开头,8位数字地区代码。不包含下面的( 32012008 32012011 32012012 32012013 32012002 32012004 32012007 32012006 32053006地区代码)除外,不知道如何写,求大侠帮助,比如32000000应该匹配成功,32012008匹配不成功。
...全文
184 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanguang_honesty 2014-04-02
  • 打赏
  • 举报
回复
@rui888 ,我的意思就是 java_liyi 回答的,谢谢了啊!
tony4geek 2014-04-02
  • 打赏
  • 举报
回复
是不是楼上的意思/
tanguang_honesty 2014-04-02
  • 打赏
  • 举报
回复
@java_liyi,已经给分,非常感谢您!
java_liyi 2014-04-02
  • 打赏
  • 举报
回复
lz别走,小倩倩碗里来
tanguang_honesty 2014-04-02
  • 打赏
  • 举报
回复
@java_liyi ,是这样写的,非常感谢!
java_liyi 2014-04-02
  • 打赏
  • 举报
回复
试下这个 ^32(?!012008|012011|012012|012013|012002|012004|012007|012006|053006)\\d{6}$
tanguang_honesty 2014-04-02
  • 打赏
  • 举报
回复
是不是要想4楼回复那样解决,拆分为多个范围合并呢!
tanguang_honesty 2014-04-02
  • 打赏
  • 举报
回复
@rui888,你可能理解错我的意思了,我的意思是在 32000000~32999999范围内剔除上面几个数字。 例如:

        String key="taxFlag\\.37\\d[^2]\\d{4}\\.[0-1]\\.\\d{1,3}";// 以37开头,并且不能包含3702  1-0.1
        String name="taxFlag.37030000.1.5";
        Object aa = Pattern.compile(key);
		if (! (aa instanceof Pattern)) {
			System.out.println("not a valiadate regex ");
		}
		if (((Pattern)aa).matcher(name).matches()) {
			System.out.println("匹配成功!");
		}else{
			System.out.println("匹配不成功!");
		}
现在只要一段正则表达式替换 String key即可。
tony4geek 2014-04-02
  • 打赏
  • 举报
回复
	String noPatten=" 32012008 32012011 32012012 32012013 32012002 32012004 32012007 32012006 32053006";
		String s1="32012008";
		String s2="32000000";
		System.out.println(!noPatten.matches(".*?\\s"+s1+"\\s.*?"));
		System.out.println(!noPatten.matches(".*?\\s"+s2+"\\s.*?"));
tanguang_honesty 2014-04-02
  • 打赏
  • 举报
回复
按道理应该是可以用正则实现的,就是不知道如何实现?
tanguang_honesty 2014-04-02
  • 打赏
  • 举报
回复
我也想用if判断啊!可惜需要做成可配置化到属性文件中,这个属性文件的读取支持正则表达式,发布程序不需要重启!
zdxing007 2014-04-02
  • 打赏
  • 举报
回复
用IF判断得了。。
tanguang_honesty 2014-04-01
  • 打赏
  • 举报
回复
能告诉我解决思路吗? 根据数字排序如下: 32000000 ---第一个数字,最小数字 32012002 32012004 32012006 32012007 32012008 32012011 32012012 32012013 32053006 32999999----最大数字 是不是只能 这样做了,取 32000000~ 32012001范围,加32012003,加32012009,32012010, 然后 32012014~32053005,最后 32053007~32999999。。。只能这样写范围吗?
Q.sean 2014-04-01
  • 打赏
  • 举报
回复
有除外的几个数字不匹配,一个正则表达式搞定不了吧,怎么不得ls然后判断判断,写个脚本或者什么的
tanguang_honesty 2014-04-01
  • 打赏
  • 举报
回复
具体如何过滤呢?求教?是要用 零宽断言吧?
qq120848369 2014-04-01
  • 打赏
  • 举报
回复
这也不难, 先把32开头后跟8位数字的正则匹配出来,然后遍历每个匹配结果做过滤。

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧