开篇,还是得说说 ^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明:
"^abc$": 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配。
你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达式) 可以出现在被检验字符串的任何地方,你没有把他锁定到两边。
他们用来表示一个字符可以出现的次数或者顺序. 他们分别表示:
- "zero or more"相当于{0,},
- "one or more"相当于{1,},
- "zero or one."相当于{0,1}, 这里是一些例子:
- "ab*": 和ab{0,}同义,匹配以a开头,后面可以接0个或者n个b组成的字符串("a", "ab", "abbb", 等);
- "ab+": 和ab{1,}同义,同上条一样,但最少要有一个b存在 ("ab", "abbb", 等.);
- "ab?":和ab{0,1}同义,可以没有或者只有一个b;
- "a?b+$": 匹配以一个或者0个a再加上一个以上的b结尾的字符串.
你也可以在大括号里面限制字符出现的个数,比如
- "ab{2}": 要求a后面一定要跟两个b(一个也不能少)("abb");
- "ab{2,}": 要求a后面一定要有两个或者两个以上b(如"abb", "abbbb", 等.);
- "ab{3,5}": 要求a后面可以有2-5个b("abbb", "abbbb", or "abbbbb").
",[a-za-z0-9]$": 匹配以逗号再加一个数字或字母结尾的字符串
要点:^用在中括号开头的时候,就表示排除括号里的字符。为了php能够解释,你必须在这些字符面前后加'',并且将一些字符转义.
还有,正如regx的手册告诉我们: "如果列表里含有 ']', 最好把它作为列表里的第一个字符(可能跟在'^'后面). 如果含有'-', 最好把它放在最前面或者最后面, or 或者一个范围的第二个结束点[a-d-0-9]中间的‘-’将有效.