这是使用的2个正则表达式。第一个是带有分隔符的SSN类型号,第二个是直接的9位数字,用于检查前后字符。
正则表达式( “\ d {1} \ d {3} \ d {1} \ d {2} \ d {1} \ d {4} \ d {1}”)
正则表达式(“\ D {1} \ d {9} \ D {1}”)
问题是我们捕获的其他条目类似于那些,但我们需要足够具体,这些条目不会被捕获。
如 -
(xxxx)xxx-xx-xxxx
684072943(和订单号等)
FA300217F0090
潜在比赛#1:--------------- nt:ex:201 [[71230 0821]]上午:201 [[71230 0821]]上午6月26日 - -------------潜在比赛#2:---------------上午:201 [[71230 0821]]上午6月26日DTG(日期)时间组)
“[[210v13:2012]],”
有什么想法吗?
答案 0 :(得分:0)
你的前提有点不正确。你想要匹配9位数吗?因为684072943是九位数。 (xxxx)xxx-xx-xxxx也将是正确的SSN格式,但是你说它是无效的,因为它之前的某些东西,这在某种程度上是一个延伸(并且很难,如果不是不可能的话,用regex验证) 。 FA300217F0090根本不匹配任何东西。 210v13:2012最终可能会匹配,但可以解决这个问题。
也许您应该首先考虑使用正确的3-2-4格式(分隔)的'SSN类型'。
你可以try,说:
List
我们在模式的边缘使用单词边界,然后使用ArrayList<ArrayList<Integer>> arrayLists = new ArrayList<ArrayList<Integer>>();
arrayLists.add(new ArrayList<Integer>());
arrayLists.get(0).add(100);
arrayLists.get(0).add(50);
arrayLists.add(new ArrayList<Integer>());
arrayLists.get(1).add(67);
System.out.println(arrayLists.get(0).get(0)); // 100
System.out.println(arrayLists.get(0).get(1)); // 50
System.out.println(arrayLists.get(1).get(0)); // 67
反向引用分隔符,以保证它们是相同的字符。我不确定是否允许任何非数字分隔符,而不仅仅是短划线/空格等,但这样做会。
最后,我用谷歌搜索,这个主题似乎是on the 'net already,为什么重新发明轮子?