正则表达式

Posted houyu

tags:

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

正则表达式对照表(来自百度,仅供参考)

 

正则表达式

匹配的字符串

k

k

abc

abc

[abc]

a, b, c

[abc][123]

a1,b3,c2,a3,b1,c2

[a-z]

a,z,g,r

[a-zA-Z_0-9]

a,A,0,9,_

[u4e00-u9fa5]

中文范围

d

数字 [0-9]

D

排除数字 [^0-9]

w

单词字符[a-zA-Z_0-9]

W

排除单词字符

s

空白字符

S

排除空白字符

.

任意字符

[abc]?

? 0或1个

a,b,,c

[abc]?[123]

a1,b2,c3,3,1

[abc]*

* 0到多个

a,aa,,abcaccbcacb

[abc]+

+ 1到多个

a,ab,abc,abcbcbcca

[abc]{3}

3个

aaa,bab,abc,cba,cca

[abc]{3,5}

3到5个

abc,abca,abcab

[abc]{3,}

3到多个,至少3个

abc,abcc,cbccaaaccbca

|

^

字符集内,表示排除;

字符集外,表示起始位置

^ad+

a5,a5342,a6343,a463452

$

表示结尾位置

d+a$

5a,6345a,64534522a

字符串的一些正则表达式匹配运算常用方法

  matches(正则)

    当前字符串,是否能与指定的正则表达式相匹配

  split(正则)

    "abc,def,ghi"

    ["abc",  "def",  "ghi"]

  replaceAll(正则,子串)

两段示例代码

  身份证号与电话号

 

  1 import java.util.Scanner;
  2 
  5 public class Test1 {
  7    public static void main(String[] args) {
  9       System.out.println("

-----------------");
 11       f1();
 13       System.out.println("

-----------------");
 15       f2();
 17    }
 20 
 21    private static void f1() {
 23       System.out.println("输入身份证号:");
 25       String s = new Scanner(System.in).nextLine();
 27       /*
 29        * 123456789012345
 31        * 123456789012345678
 33        * 12345678901234567x
 35        * 12345678901234567X
 37        *
 39        * d{15}|
 41        * d{15}|d{17}
 43        * d{15}|d{17}[dxX]
 45        *
 47        * 正则表达式中的“”,
 49        * 在Java字符串中要写成转义格式
 51        * \d{15}|\d{17}[\dxX]
 53        *
 55        */
 57       //判断输入格式
 59       String regex = "\d{15}|\d{17}[\dxX]";
 61       if(s.matches(regex)) {
 63          System.out.println("格式正确");
 65       } else {
 67          System.out.println("格式错误");
 69       }
 71    }
 72 
 77    private static void f2() {
 79       System.out.println("输入固定电话号码:");
 81       String s = new Scanner(System.in).nextLine();
 83       /*
 85        * 1234567
 87        * 12345678
 89        * 010-1234567
 91        * 0101-12345678
 93        * (010)1234567
 95        * (0101)12345678
 97        *
 99        * d{7,8}
101        * (区号)?d{7,8}
103        * (|)?d{7,8}
105        * (d{3,4}-|)?d{7,8}
107        * (d{3,4}-|())?d{7,8}
109        * (d{3,4}-|())?d{7,8}
111        * (d{3,4}-|(d{3,4}))?d{7,8}
113        *
115        * (\d{3,4}-|\(\d{3,4}\))?\d{7,8}
117        *
119        */
121       //判断输入格式
123       String regex = "(\d{3,4}-|\(\d{3,4}\))?\d{7,8}";
125       if(s.matches(regex)) {
127          System.out.println("格式正确");
129       } else {
131          System.out.println("格式错误");
133       }
135    }
137 }
138
139  

 

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

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

攻破难啃的骨头-正则表达式(转)

正则表达式的贪婪和非贪婪模式