java 正则表达式去掉'号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 正则表达式去掉'号相关的知识,希望对你有一定的参考价值。

正则表达式:[0-9A-Z -+\\-/:-@\\\\_|~。-、]* 是去不掉 ' 号的。 请教大侠们 这样修改可以去掉'号啊?
public class Testjz
public static void main(String[] args)
String testStr1 = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_'abc|~《》。、「」";
String nn = "";
String mm = "";
String pat="[0-9A-Z -+\\-/:-@\\\\_|~。-、]*";

for(int i = 0; i< testStr1.length();i++)
if(testStr1.substring(i, i+1).matches(pat))
nn = nn + testStr1.substring(i, i+1);
else
mm = mm + testStr1.substring(i, i+1);


System.out.println("通过>>>>>" + nn);
System.out.println("不过>>>>>" + mm);

把'号加进表达式中就可以了,[0-9A-Z -+\\-/:-@\\\\_|~。-、']* 参考技术A 52

java中身份*号正则表达式

很多学员在测试的时候对于java编写的程序中身份*号码的正则表达式不太清楚,我们在此专门写一篇博文说明一下。


首先要明白身份*号码的编码规则,然后根据编码规则去写正则表达式:


18位身份*号编码规则如下:

第1位和第2位:省,自治区,直辖市代码(有关取值可查看代码表);

第3位和第4位:地级市,盟,自治州代码(有关取值可查看代码表);

第5位和第6位:县,县级市,区代码(有关取值可查看代码表);

第7位到第10位:出生年;

第11位和第12位:出生月;

第13位和第14位:出生日;

第15位到第17位:顺序码,第17位若是男生则为单数,若是女生则为双数(大家可以自己验证一下)

第18位:表示校验码,可以是0-9或者X(注意是大写的);


所以验证18位身份*号码的正则表达式为:

"^[1-9]\\\\d{5}[1-9]\\\\d{3}((0[1-9])||(1[0-2]))((0[1-9])||(1\\\\d)||(2\\\\d)||(3[0-1]))\\\\d{3}([0-9]||X)$"

其中:

1、^表示开始,$表示结束;

2、前六位:[1-9]第一位是1-9其中一位,后面是0-9随机数5个({5}表示五位数的意思);

3、年份:[1-9]\\\\d{3}表示年份是1-9开始加0-9随机数三个,例如1994;

4、月份:((0[1-9])||(1[0-2]))表示月份是01-09或者10-12其中的两位数;

5、日:((0[1-9])||(1\\\\d)||(2\\\\d)||(3[0-1]))表示01-09或者10-19或者20-29或者30-31其中的两位数;

6、最后四位:\\\\d{3}([0-9]||X)表示3位0-9的随机数加0-9其中一位或者X;


但是以上正则表达式验证的身份*号码只能说是符合身份证编码规则,不能确定身份证是否有效。因为即使以上的正则表达式仍然无法避免出现2月31日的情况,另外,对于最后一位的校验码是根据具体的公式推算出来的,不是随机的。但是对于当下的一般项目来说,这个正则表达式已经算是比较严谨的一个了。

补充:15位的身份*号已经不再使用,但是对于15位身份*号码的正则表达式也进行一下补充,供大家参考: 

"^[1-9]\\\\d{7}((0[1-9])||(1[0-2]))((0[1-9])||(1\\\\d)||(2\\\\d)||(3[0-1]))\\\\d{3}$"

说明:15位身份证出生年显示两位,例如1994年出生,18位身份证显示1994,而15位则显示94,另外15位身份证无校验码,所以整体比18位身份*号少了3位。


附-身份证号最后一位校验码的确定算法为:

1、将身份*号前17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:
7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2;
2、将这17位数字和系数相乘的结果相加,用加出来和除以11,确定余数;
3、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字,其分别对应的最后一位身份证的号码为1-0-X-9-8-7-6-5-4-3-2。
大家可以亲自尝试测试一下,看一看用自己身份*号的前17位是否可以推导出最后一位检验码。


讲师更多课程请访问:http://edu.51cto.com/lecturer/5811414.html



本文出自 “昊洋_栖息处” 博客,请务必保留此出处http://zdytesting.blog.51cto.com/5811414/1946771

以上是关于java 正则表达式去掉'号的主要内容,如果未能解决你的问题,请参考以下文章

php 正则匹配HTML标签以外的匹配词 并且不匹配A标签中的匹配词

java用正则表达式截取json多余的字符串

如何用正则表达式去掉html标签

正则表达式如何匹配+号?

java正则表达式去掉指定字符串

python中用正则表达式去掉文本中所有的标点符号