JS正则表达式

概念
        正则表达式:是对字符串操作的一种逻辑公式,用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
  给定一个正则表达式和另一个字符串,我们可以达到如下的目的:1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。
  正则表达式的特点是:1. 灵活性、逻辑性和功能性非常的强;2. 可以迅速地用极简单的方式达到字符串的复杂控制。3. 对于刚接触的人来说有点难。
        

用途

        那么正则表达式的用途是什么?

        最常见的就是windows查询,例如想查询“廊坊师院12.jpg”,我们可以使用“廊坊师??2*.jpg”

        SQLServer中也有类似功能,例如:

SELECT TOP 1000 [cityID]
      ,[proID]
      ,[cityName]
  FROM[beidaqingniao].[dbo].[chengshi]
  where cityID  like '[^6-9]'

       再者,我们也可以用正则表达式检测email、邮编等的格式。

对正则的分类

       其实正则表达式的语法没分这么多类,但是为了更好的区分和理解其中的语法,故分成这些类别。

        标识符

        JavaScript中,正则表达式的标识符是/ /;在VBScript中,通常采用的标识符是“

        作用范围

        如果不加范围,默认从开始位置查找第一个符合正则表达式的结果;加上gglobal/  /g),是从整个语句中获取结果;加上i(自认为是ignore,/  /i)可以忽略大小写。

        优先级

        自上而下优先级依次降低。

操作符

\

 

(), (?:), (?=), []

 

*, +, ?, {n}, {n,}, {n,m}

 

^, $, \anymetacharacter

 

   |

 

        位置

        ^x表示以x开始;x$表示以x结尾。

        数量

        .代表任意一个字符;\d66个数字;xnmn-mxxn,}n个以上xx?表示有或没有x+表示一个以上;*表示0个以及上;

        类型

        \d数字;\D非数字;\s表示space键;\表示非space键(其它类似,小写表示是,大写表示非)。

        操作

        []字符集多选一,[a-z]az中间的一个字符(类似还有[A-Z],[0-9]),[^XXX]表示非[]中的字符(注意与位置中的^分开),x|y表示选择xy

正则表达式字符

        普通字符:常用的包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。

        特殊字符

特殊字符

说明

$

匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' '\r'。要匹配 $字符本身,请使用 \$

( )

标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( \)

*

匹配前面的子表达式零次或多次。要匹配 *字符,请使用 \*

+

匹配前面的子表达式一次或多次。要匹配 +字符,请使用 \+

.

匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \

[

标记一个中括号表达式的开始。要匹配 [,请使用 \[

?

匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ?字符,请使用 \?

\

将下一个字符标记为或特殊字符、或原义字符、或后向引用、或八进制转义符。例如, 'n'匹配字符 'n''\n'匹配换行符。序列 '\\'匹配 "\",而 '\('则匹配 "("

^

匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^字符本身,请使用 \^

{

标记限定符表达式的开始。要匹配 {,请使用 \{

|

指明两项之间的一个选择。要匹配 |,请使用 \|

          非打印字符  

字符

含义

\cx

匹配由x指明的控制字符。例如, \cM匹配一个 Control-M或回车符。 x 的值必须为 A-Z a-z之一。否则,将 c视为一个原义的 'c'字符。

\f

匹配一个换页符。等价于 \x0c \cL

\n

匹配一个换行符。等价于 \x0a \cJ

\r

匹配一个回车符。等价于 \x0d \cM

\s

匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]

\S

匹配任何非空白字符。等价于 [^ \f\n\r\t\v]

\t

匹配一个制表符。等价于 \x09 \cI

\v

匹配一个垂直制表符。等价于 \x0b \cK

        限定符

字符

描述

*

匹配前面的子表达式零次或多次。例如,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*'

{n,m}

m  n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。刘, "o{1,3}" 将匹配 "fooooood"中的前三个 o'o{0,1}'等价于 'o?'。请注意在逗号和两个数之间不能有空格。

              定位符

字符

描述

^

匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^也匹配 '\n' '\r'之后的位置。

$

匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$也匹配 '\n' '\r'之前的位置。

\b

匹配一个单词边界,也就是指单词和空格间的位置。

\B

匹配非单词边界。

实例

        QQ号:/\d{5,}/  ,表示由五位以上数字组成。

        固定电话:/(\d{3}|\d{4})-\d{7}/g,表示区号为43位数字,号码由7位数字组成。

        中文检测:[\u4e00-\u9f5a]。代表了符合汉字GB18030规范的unicode字符集。

        为空检测:/^ +$/g。表示首字符、中间和尾字符都是“ ”。

        email/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/ 或者/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/

posted @ 2014-07-27 08:48  阳光小屋  阅读(168)  评论(0编辑  收藏  举报