正则语法及常用正则
正则表达式语法
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
在典型的搜索和替换操作中,必须提供要查找的确切文字。这种技术对于静态文本中的简单搜索和替换任务可能足够了,但是由于它缺乏灵活性,因此在搜索动态文本时就有困难了,甚至是不可能的。 使用正则表达式,就可以:
例如,如果需要搜索整个 web 站点来删除某些过时的材料并替换某些HTML 格式化标记,则可以使用正则表达式对每个文件进行测试,看在该文件中是否存在所要查找的材料或 HTML 格式化标记。用这个方法,就可以将受影响的文件范围缩小到包含要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料,最后,可以再次使用正则表达式来查找并替换那些需要替换的标记。 另一个说明正则表达式非常有用的示例是一种其字符串处理能力还不为人所知的语言。VBScript 是 Visual Basic 的一个子集,具有丰富的字符串处理功能。与 C 类似的 Jscript 则没有这一能力。正则表达式给 JScript 的字符串处理能力带来了明显改善。不过,可能还是在 VBScript 中使用正则表达式的效率更高,它允许在单个表达式中执行多个字符串操作。 一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 这里有一些可能会遇到的正则表达式示例:
下表是元字符及其在正则表达式上下文中的行为的一个完整列表:
常用正则: 1.验证用户名和密码:( "^[a-zA-Z]\w{5,15}$ ")正确格式: "[A-Z][a-z]_[0-9] "组成,并且第一个字必须为字母6~16位; 2.验证电话号码:( "^(\d{3.4}-)\d{7,8}$ ")正确格式:xxx/xxxx-xxxxxxx/xxxxxxxx; 3.验证身份证号(15位或18位数字):( "^\d{15} ¦\d{18}$ "); 4.验证Email地址:( "^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ "); 5.只能输入由数字和26个英文字母组成的字符串:( "^[A-Za-z0-9]+$ ") ; 6.整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 7.只能输入数字: "^[0-9]*$ "。 8.只能输入n位的数字: "^\d{n}$ "。 9.只能输入至少n位的数字: "^\d{n,}$ "。 10.只能输入m~n位的数字:。 "^\d{m,n}$ " 11.只能输入零和非零开头的数字: "^(0 ¦[1-9][0-9]*)$ "。 12.只能输入有两位小数的正实数: "^[0-9]+(.[0-9]{2})?$ "。 13.只能输入有1~3位小数的正实数: "^[0-9]+(.[0-9]{1,3})?$ "。 14.只能输入非零的正整数: "^\+?[1-9][0-9]*$ "。 15.只能输入非零的负整数: "^\-[1-9][]0-9 "*$。 16.只能输入长度为3的字符: "^.{3}$ "。 17.只能输入由26个英文字母组成的字符串: "^[A-Za-z]+$ "。 18.只能输入由26个大写英文字母组成的字符串: "^[A-Z]+$ "。 19.只能输入由26个小写英文字母组成的字符串: "^[a-z]+$ "。 20.验证是否含有^%& ',;=?$\ "等字符: "[^%& ',;=?$\x22]+ "。 21.只能输入汉字: "^[\u4e00-\u9fa5]{0,}$ " 22.验证URL: "^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ "。 23.验证一年的12个月: "^(0?[1-9] ¦1[0-2])$ "正确格式为: "01 "~ "09 "和 "1 "~ "12 "。 24.验证一个月的31天: "^((0?[1-9]) ¦((1 ¦2)[0-9]) ¦30 ¦31)$ "正确格式为; "01 "~ "09 "和 "1 "~ "31 "。 25."^\d+$ " //非负整数(正整数 + 0) 26."^[0-9]*[1-9][0-9]*$ " //正整数 27."^((-\d+) ¦(0+))$ " //非正整数(负整数 + 0) 28."^-[0-9]*[1-9][0-9]*$ " //负整数 29."^-?\d+$ " //整数 30."^\d+(\.\d+)?$ " //非负浮点数(正浮点数 + 0) 31."^(([0-9]+\.[0-9]*[1-9][0-9]*) ¦([0-9]*[1-9][0-9]*\.[0-9]+) ¦([0-9]*[1-9][0-9]*))$ " //正浮点数 32."^((-\d+(\.\d+)?) ¦(0+(\.0+)?))$ " //非正浮点数(负浮点数 + 0) 33."^(-(([0-9]+\.[0-9]*[1-9][0-9]*) ¦([0-9]*[1-9][0-9]*\.[0-9]+) ¦([0-9]*[1-9][0-9]*)))$ " //负浮点数 34."^(-?\d+)(\.\d+)?$ " //浮点数 35."^[A-Za-z]+$ " //由26个英文字母组成的字符串 36."^[A-Z]+$ " //由26个英文字母的大写组成的字符串 37."^[a-z]+$ " //由26个英文字母的小写组成的字符串 38."^[A-Za-z0-9]+$ " //由数字和26个英文字母组成的字符串 39."^\w+$ " //由数字、26个英文字母或者下划线组成的字符串 40."^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ " //email地址 41."^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ " //url 42.提取信息中的网络链接: (h ¦H)(r ¦R)(e ¦E)(f ¦F) *= *( ' ¦ ")?(\w ¦\\ ¦\/ ¦\.)+( ' ¦ " ¦ * ¦ >)? 43.提取信息中的邮件地址: \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 44.提取信息中的图片链接: (s ¦S)(r ¦R)(c ¦C) *= *( ' ¦ ")?(\w ¦\\ ¦\/ ¦\.)+( ' ¦ " ¦ * ¦ >)? 45.提取信息中的ip地址: (\d+)\.(\d+)\.(\d+)\.(\d+) 46.提取信息中的中国手机号码: (86)*0*13\d{9} 47.提取信息中的中国固定电话号码: (\(\d{3,4}\) ¦\d{3,4}- ¦\s)?\d{8} 48.提取信息中的中国电话号码(包括移动和固定电话): (\(\d{3,4}\) ¦\d{3,4}- ¦\s)?\d{7,14} 49.提取信息中的中国邮政编码: [1-9]{1}(\d+){5} 50.提取信息中的中国身份证号码: \d{18} ¦\d{15} 51.提取信息中的整数: \d+ 52.提取信息中的浮点数(即小数):(-?\d*)\.?\d+ 53.提取信息中的任何数字 : (-?\d*)(\.\d+)? 54.提取信息中的中文字符串: [\u4e00-\u9fa5]* 55.提取信息中的双字节字符串 (汉字):[^\x00-\xff]* 56.提取信息中的英文字符串:\w* 57.提取任意HTML标记之间的内容:<script[\s\S]+</script *> 58.高强度日期验证 ^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$ 59.高强度日期+时间验证 ^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$ 从上面我们可以看到: "^ "表示后面紧跟着的字符为开头;与之相对应的式 "$ "以紧跟前面的字符为结尾.但是要注意的式当 "^ "位于 "[] "里时,表示 "非 "的意思,例如:[^AZ]表示不能为 "AZ "中的任一个字符. "[] "表示当中的一个字符. "{} "可以取得一个范围,例如 "{9} "表示9个,而 "{1,9} "表示1到9个字符. |