正则表达式教程学习笔记

By | 2010/01/17

   很多地方用得上正则表达式,  如php正则替换, .htaccess的重写规则等等 都要用到正则表达式.  正则表达式都是字符和抽象的符号, 所以很难学, 做个笔记, 不懂翻一翻,以期掌握.

^  开始符号    $ 结尾符号  

. 匹配除了换行符以外的任意字符   * 连续重复前边的内容任意次以使整个表达式得到匹配

.* 连在一起就意味着任意数量的不包含换行的字符

\d  匹配一位数字(0,或1,或2,或……)  \w 匹配字母或数字或下划线或汉字   \s 匹配任意的空白符     \b  匹配单词的开始或结束    如果大写就相反

+ 至少重复一次或更多次  ? 重复零次或一次

0\d{2}-\d{8}  这里\d后面的{2}({8})的意思是前面\d必须连续重复匹配2次(8次)

要转义的字符 :   \.    \*    \\  \(  \[  等

[aeiou]  匹配任何一个英文元音字母[.?!]  匹配标点符号(.或?或!)  [^x]  匹配除了x以外的任意字符

() 分组 匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推

a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)ab(第四到第五个字符)

 

收集一些常用的正则表达式

  "^\d+$"  //非负整数(正整数 + 0)

  "^[0-9]*[1-9][0-9]*$"  //正整数

  "^[A-Za-z]+$"  //由26个英文字母组成的字符串

  "^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串

  "^\w+$"  //由数字、26个英文字母或者下划线组成的字符串

  "^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"    //email地址

  "^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"  //url

  /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日

  /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年

  "^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil

  "(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?" //电话号码

  "^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址

  匹配中文字符的正则表达式: [\u4e00-\u9fa5]

  匹配双字节字符(包括汉字在内):[^\x00-\xff]

  匹配空行的正则表达式:\n[\s| ]*\r

  匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/

  匹配首尾空格的正则表达式:(^\s*)|(\s*$)

  匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

  匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$

  匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

  匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?

  匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$

  匹配中文字符的正则表达式: [u4e00-u9fa5]

  匹配双字节字符(包括汉字在内):[^x00-xff]

  匹配空行的正则表达式:n[s| ]*r

  匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/

  匹配首尾空格的正则表达式:(^s*)|(s*$)