正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式基本语法
‘^’ ,’$’。
’^’:指出一个字符串的开始。
“^The”:表示所有以"The"开始的字符串(“There”,"The cat"等);
’$ ':指出一个字符串的结束。
“of despair$”:表示所有以"of despair"结尾的字符串;
“^abc$”:表示开始和结尾都是"abc"的字符串——只有"abc"自己;
“notice”:表示任何包含"notice"的字符串。
‘*’,’+’,’?’,’{ }’
’*’:表示没有或更多,>=0。
“ab*”:表示一个字符串有一个a后面跟着零个或若干个b。(“a”, “ab”, “abbb”,……);
’+’:表示至少有一个或更多,>=1。
“ab+”:表示一个字符串有一个a后面跟着至少一个b或者更多,(“ab”, “abbb”,……);
’?’:表示要么没有,要么只有一个,0 or 1。
“ab?”:表示一个字符串有一个a后面跟着一个b或没有b,(“a”,“ab”);
’{ }’:用以表示重复次数的范围。
“ab{2}”:表示一个字符串有一个a跟着2个b(“abb”);
“ab{2,}”:表示一个字符串有一个a跟着至少2个b;
“ab{3,5}”:表示一个字符串有一个a跟着3到5个b。
必须指定范围的下限(如:"{0,2}" 而不是"{,2}")。’*’,’+'和
'?'相当于"{0,}","{1,}“和”{0,1}"。
‘|’
’|’:表示“或”操作
“hi|hello”:表示一个字符串里有"hi"或者"hello";
“(b|cd)ef”:表示"bef"或"cdef";
“(a|b)*c”:表示一串"a"“b"混合的字符串后面跟一个"c”;
‘.’
’.’:可以替代任何字符:
“a.[0-9]”:表示一个字符串有一个"a"后面跟着一个任意字符和一个数字;
“^.{3}$”:表示有任意三个字符的字符串(长度为3个字符);
‘[ ]’
’[ ]’:表示某些字符允许在一个字符串中的某一特定位置出现:
“[ab]”:表示一个字符串有一个"a"或"b"(相当于"a¦b");
“[a-d]”:表示一个字符串包含小写的’a’到’d’中的一个(相当于"a¦b¦c¦d"或者"[abcd]");
" ^ [a-zA-Z ] ":表示一个以字母开头的字符串;
“[0-9]%”:表示一个百分号前有一位的数字;
“,[a-zA-Z0-9]$”:表示一个字符串以一个逗号后面跟着一个字母或数字结束。
在方括号里用’ ^ '表示不希望出现的字符,’^ '应在方括号里的第一位。(如:"%[^a-zA-Z]%"表示两个百分号中不应该出现字母)。
如果为了是为了匹配这些特殊字符,就必须在 " ^.$()¦*+?{\ " 这些字符前加上转移字符’\ '。请注意在方括号中,不需要转义字符。
用例解析
1、校验是否全由数字组成
^ [0-9]{1,20}$
^ 表示打头的字符要匹配紧跟^后面的规则
$ 表示打头的字符要匹配紧靠$前面的规则
[ ] 中的内容是可选字符集
[0-9] 表示要求字符范围在0-9之间
{1,20}表示数字字符串长度合法为1到20,即为[0-9]中的字符出现次数的范围是1到20次。
^ 和 $成对使用应该是表示要求整个字符串完全匹配定义的规则,而不是只匹配字符串中的一个子串。
2、校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串
/^ [a-zA-Z]{1}([a-zA-Z0-9]|[ . _ ]){4,19}$
^ [a-zA-Z]{1} 表示第一个字符要求是字母。
([a-zA-Z0-9]|[. _ ]){4,19} 表示从第二位开始(因为它紧跟在上个表达式后面)的一个长度为4到9位的字符串,它要求是由大小写字母、数字或者特殊字符集[._]组成。
3、校验密码:只能输入6-20个字母、数字、下划线
/^(\w){6,20}$/
\w:用于匹配字母,数字或下划线字符
总结
正则表达式是一个string对象的字符序列,该字符序列中含有具有特殊意义的字符,这些特殊意义的字符称作正则表达式中的元字符。
string对象调用public boolean matches(string regex)方法可以判断当前string对象的字符序列是否和参数regex指定的正则表达式匹配。
元字符
元字符表示正则表达式中出现的内容是什么
自定义元字符:[ ]
限定修饰符
限定修饰符用于限定正则表达式中元字符出现的次数