正则小结

1、元字符  [拥有特殊含义的元字符]  \d -> 匹配一个0-9的数字,相当于[0-9],和它相反的是\D ->匹配一个除了0-9的任意字符  \w -> 匹配一个0-9、a-z、A-Z、_的数字或字符,相当于[0-9a-zA-Z_]  \s -> 匹配一个空白字符(空格、制表符...)  \b -> 匹配一个单词的边界  \t -> 匹配一个制表符  \n -> 匹配一个换行  . -> 匹配一个除了\n以外的任意字符  ^ -> 以某一个元字符开头  $ -> 以某一个元字符结尾  \ -> 转移字符  x|y -> x或者y的一个  [xyz] -> x、y、z中的任意一个  [^xyz] -> 除了xyz中的任意一个字符  [a-z] -> 匹配a-z中的任意一个字符  [^a-z] -> 匹配除了a-z中的任意一个字符  () -> 正则中的分组

注意:  1)关于[]    a、[+] ->中括号中出现的所有字符都代表的是本身的意思    b、[12-65] ->这个不是12-65而是1/2-6/5三者中的一个

2)关于()    a、分组的作用是改变默认的优先级,例如:/^18|19$/,181、189、119、819、1819...都符合,而不是我们认为的18或19,但是改成/^(18|19)$/就是单纯的18或19了    b、可以在捕获大正则匹配的内容同时,把分组匹配的内容也进行捕获->分组捕获    c、分组引用,例如:/^(\d)(\w)\2\1$/,这里的\2是和第二个分组出现一模样的内容,\1是和第一个分组出现一模一样的内容,例如:"0aa0"就符合了

[代表数量的量词元字符]  * -> 0到多个  + -> 1到多个  ? -> 0到1个  {n} -> 出现n次  {n,} -> 出现n到多次  {n,m} -> 出现n到m次

注意:  1)关于?的几种情况    a、放在非量词元字符后面,代表出现0-1次    b、放在量词元字符后面,代表取消捕获时候的贪婪性,例如:reg=/\d+/; reg.exec("2015") -> "2015" 但是如果正则这样写 reg=/\d+?/; reg.exec("2015") -> "2"    c、在分组开头加?:,代表当前的分组只是匹配不进行捕获,例如:/^(?:\d+)$/    d、在分组开头加?=,正向预查,例如:/^abcdef(?=1|2)$/ 只有"abcdef1"和"abcdef2"才符合    e、在分组开头加?!,负向预查,例如:/^abcdef(?!1|2)$/ 除了"abcdef1"和"abcdef2"不符合,其他的只要是"abcdef(任何的东西)"都符合

[代表本身意思的元字符]  除了以上的,在字面量方式中,我们出现的其他任意字符代表的都是自己本身的意思  var num=12;  var reg=/^\w"+num+"$/; ->这里"+num+"不是把变量的值拼接,而这里的不管是"还是+都是元字符  ->对于需要拼接字符串和变量的方式我们只能使用实例方式创建正则

2、修饰符  i -> ignoreCase 忽略字母的大小写  g -> global 全局匹配 (加上g可以解决正则捕获时候的懒惰性)  m -> multiline 多行匹配

3、项目中常用的正则  1)有效数字的  var reg=/^[+-]?(\d|([1-9]\d+))(\.\d+)?$/;

2)邮箱的  var reg = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;

3)电话的  var reg = /^1\d{10}$/;

4)年龄在18-65之间的  var reg = /^((18|19)|([2-5]\d)|(6[0-5]))$/;

5)中文姓名  var reg = /^[\u4e00-\u9fa5]{2,4}$/;

6)身份证  var reg = /^(\d{6})(\d{4})(\d{2})(\d{2})(?:\d{2})(\d)(?:\d|X)$/;  //-> 12828(省市县) 1990(年) 12(月) 04(日) 06 1(奇数是男偶数是女) 7(数字或者X)

4、正则的匹配  reg.test([string]) ->true就是匹配成功  false->匹配不成功

5、正则的捕获  1)reg.exec([string])    -> 首先去匹配,匹配成功在捕获,返回的是一个数组; 如果匹配不成功返回的是null;    -> 正则的捕获即懒惰又贪婪    -> 解决懒惰性 在正则的末尾增加全局修饰符g    -> 解决贪婪性 在量词后面加?

后续还有*********************************************
时间: 2024-10-29 00:47:27

正则小结的相关文章

第十节 正则表达式

第1章 什么是正则表达式 正则表达式就是为了处理大量的文本|字符串而定义的一套规则和方法 通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤,替换或输出需要的字符串.Linux正则表达式一般以行为单位处理. 简单说 为处理大量文本|字符串而定义的一套规则和方法 以行为单位出来,一次处理一行 正则表达式是一种描述一组字符串的模式,类似数字表达式,通过各种操作符组成更小的表达式 第2章 为何使用正则表达式 linux运维工作,大量过滤日志工作,化繁为简.简单,高效.正则表达式高级工具:三剑客都支

Linux之特殊符号与正则表达式

Linux中常用的特殊符号 '' 所见即所得,吃啥吐啥 "" 特殊符号会被解析运行 `` ==== $() 先运行里面的命令 把结果留下 > 重定向符号 先清空文件的内容 然后追加文件的最后 >> 追加重定向 追加文件的最后 2> 错误重定向 只有错误的信息 才会通过这个漏洞进入文件中 2>> 错误追加重定向 ~ 当前用户的家目录 root ~ /root oldboy ~ /home/oldboy ! 查找并运行历史命令 !awk 包含awk的命令

(转)正则中需要转义的特殊字符小结

既然用到了正则来解析数据,这边顺便记录一下正则中需要转义的特殊字符 特别字符 说明 $ 匹配输入字符串的结尾位置.如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'.要匹配 $ 字符本身,请使用 \$. ( ) 标记一个子表达式的开始和结束位置.子表达式可以获取供以后使用.要匹配这些字符,请使用 \( 和 \). * 匹配前面的子表达式零次或多次.要匹配 * 字符,请使用 \*. + 匹配前面的子表达式一次或多次.要匹配 + 字符,请使用 \+.

正则中需要转义的特殊字符小结

正则表达式中的特殊字符,就是一些有特殊含义的字符,如“*.txt”中的*,简单的说就是表示任何字符串的意思. 如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\.ls \*.txt.正则表达式有以下特殊字符.需要转义 特别字符 说明 $ 匹配输入字符串的结尾位置.如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'.要匹配 $ 字符本身,请使用 \$. ( ) 标记一个子表达式的开始和结束位置.子表达式可以获取供以后使用.要匹配这些字

扩展正则用法小结

正则表达式:regular expression.缩写成REGEXP,是用来匹配文件内容的.通过特点的字符,通配文件内容的. 扩展正则表达式用在egrep命令中,egrep = grep -E 扩展正则表达式的要点有如下几点: 1.字符匹配: . :表示任意一个字符 [] : 表示匹配中括号内的任意一个字符 [^] : 表示匹配中括号内除外的任意一个字符. 需要注意的:字符集的表示方式, [[:punct:]] 表示匹配标点符号的 [[:space:]] 表示匹配空白字符的 [[:digit:]

一个WPF小项目小结

一:缘起 在10月中旬的时候在学校BBS上看到有人有做PC桌面客户端的需求,做的是能耗的计算和评估,要算能耗,就有很多环节,最后对这些环节数据进行一些简单计算.我想要是做的话就用比较熟的wpf,就去聊了下,对方给了1张比较复杂的Excel表格(其实对方的需求并不是很清楚,最后大概10来张EXcel表格),说是要做成软件呈现的形式,也没要求数据库,反正只要有功能,界面他们也没概念,给了个98年的老软件作为参考,最后EXcel表格弄懂结构后不复杂,计算都是加减乘除.我就答应了,这个软件算起来大概花了

初探ELK-logstash使用小结

2016/9/12 [写在前言] 说起处理日志的手段,大家或多或少都听说过ELK(elasticsearch+logstash+kibana),怎么入门呢?咱们从一个小小的目标开始. 目标:收集nginx日志,集中展示. 不少人对 ELK 的第一印象,容易觉得它这个工具组合似乎挺难上手的,错!只需动手试试就知道啦! 目标分解: 1)熟悉 logstash 的安装和基本操作 2)熟悉 elasticsearch 的安装和基本操作,然后结合 logstash 使用 3)熟悉 kibana 的安装和基

Linux sed命令小结

1.什么是sed sed,流编辑器,即stream editor.它可以将文本文件的每一行读取到内存,即所谓sed的模式空间,在这个模式空间中可以进行编辑并输出. 2.sed的使用格式 sed [options] "AdressCommand" file1,file2,... 说明: a.Adress实际上是用来确定编辑文件的范围,可以是精确的某一行,也可以是从某一行到某一行,也   可以用正则进行过滤匹配. b.Command表示将符合Address的行进行XXX操作.注意默认情况下

正则基础之——贪婪与非贪婪模式

转载自:http://blog.csdn.net/lxcnn/article/details/4756030 1        概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配.非贪婪模式只被部分NFA引擎所支持. 属于贪婪模式的量词,也叫做匹配优先量词,包括: “{m,n}”.“{m,}”.“?”.“*”和“+”. 在一些使用NFA引擎的语言中,在匹配优先量词后加上“?”