正则表达式语法解析

 正则表达式语法解析 


-、"^"头匹配
  ^front表示以"front"开头的字符串。
二、"$"尾匹配
  tail$表示以"tail"结尾的字符串。
三、转义序列
  所有转义序列都用"/"打头。如"^"、"$"、"+"、"("、")"在表达式中都有特殊意义,所以在正则表达式中也用"/^"、"/$"、"/+"、"/("、"/)"来表示。
四、字符簇
  [a-z]匹配小写字符;[A-Z]匹配写字符;[a-zA-Z]匹配所有字符;[0-9]匹配所有数字;[/./-/+]匹配所有句号,减号和加号;[^a-z]除了小写字母以外的成有字符;^[^a-z]第一个字符不能是小写字母;[^0-9]除了数字以外的所有字符;
五、重复
  ^a{4}$表示aaaa;^a{2,4}表示aa,aaa或aaaa;^a{2,}表示多于两个a的字符串;.{2}表示所有的两个字符;

下面举两个常用例子说明:

 

1、Email的验证
  要求:
  (1)必须包含一个"@"
  (2)在"@"后面的字符串至少包含一个"."号
  (3)"@"前面和后面的字符串由一个或一个以上字母、数字、下划线或减号构成
  根据这几条规则,可以与出以下正则表达式:
  ^[a-zA-Z0-9_/-]{1,}@[a-zA-Z0-9_/-]{1,}/.[a-zA-Z0-9_/-.]{1,}$
或者:
  /w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*

 

2、电话号码的验证
  要求:
  (1)电话号码由数字、"("、")"和"-"构成
  (2)电话号码为3到8位
  (3)如果电话号码中包含有区号,那么区号为三位或四位
  (4)区号用"("、")"或"-"和其他部分隔开
  (5)移动电话号码为11或12位,如果为12位,那么第一位为0
  (6)11位移动电话号码的第一位和第二位为"13"
  (7)12位移动电话号码的第二位和第三位为"13"
  根据这几条规则,可以与出以下正则表达式:
  (^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)
 
 
 
 ------------------------------------
日期
20/d{2}(-)((0[1-9])|(1[0-2]))(-)((0[1-9])|([1-2][0-9])|(3[0-1]))(T|/s)(([0-1][0-9])|(2[0-3])):([0-5][0-9]):([0-5][0-9])

格式2004-05-06 14:00:00
([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})

--------------------------
数字,字母,下划线
^[0-9a-zA-Z_]*$
^[a-zA-Z0-9]*$
---------------------
只能输入2~10个汉字
^[/u4e00-/u9fa5]{2,10}$
————————————————————————
一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

这里有一些可能会遇到的正则表达式示例:

JScript VBScript 匹配 
/^/[ /t]*$/ "^/[ /t]*$" 匹配一个空白行。 
//d{2}-/d{5}/ "/d{2}-/d{5}" 验证一个ID 号码是否由一个2位数字,一个连字符以及一个5位数字组成。 
/<(.*)>.*<///1>/ "<(.*)>.*<///1>" 匹配一个 HTML 标记。 


下表是元字符及其在正则表达式上下文中的行为的一个完整列表:

字符 描述 
/ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'/n' 匹配一个换行符。序列 '//' 匹配 "/" 而 "/(" 则匹配 "("。 
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '/n' 或 '/r' 之后的位置。 
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '/n' 或 '/r' 之前的位置。 
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。 
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。 
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。 
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值