首页 > JavaScript > JavaScript 正则表达式 字符类
2009八月2

JavaScript 正则表达式 字符类

JavaScript 正则表达式中,将单独的直接量字符放进方括号内就可以组合成字符类。在正则表达式中,字符类描述的是一个聚集,一个字符类和它所包含的任何字符都匹配。例如,正则表达式/[abc]/和字母”a”,”b”,”c”中的任何一个都匹配。下面就来简单介绍一下JavaScript正则表达式的出字符类。

字符类——用枚举定义聚集:

刚才给大家的例子中已经说明了,字符类定义的其实是一个聚集枚举。字符类与其包含的任何字符都匹配。大家看我上面给的例子就可以看出,不啰嗦了。

为何用字符类:

JavaScript 的正则表达式是支持布尔操作的,我们如果想匹配字母”a”,”b”或者”c”时可以通过之前提到过的正则表达式直接量来用布尔的形式定义,示例如下:

//为了说明正则表达式支持布尔型操作
var pattern = /a|b|c/;

之所以用字符类,是因为当要匹配的成员很多时,用字符类显然会比用布尔操作简单的多。

字符类——支持范围定义:

字符类除了枚举定义聚集外,还支持范围定义,其语法结构为:/[begin_data-end_data]/,示例如下:

//定义正则表达式匹配0-9
var pattern = /[0-9]/;

//定义正则表达式匹配数字0-9及字母a-z
var pattern = /[0-9a-z]/;

字符类——支持布尔非操作:

呃, 什么叫布尔非呢?就是布尔型里面的取反操作,也就是非嘛。。您说正,那么我就想要负的,您说大于我就说小于等于。就是这么个道理。字符类也支持布尔的非操作,只需要在括号中字符集的前面加符号”^”即可。

//匹配除字母a,b,c之外的任何一个字符
var pattern = /[^abc]/;

JavaScript 字符类缩写:

字符类缩写这个名字是我起的,呵呵。因为上述所说一些观点,大家也可以看出来了,字符类是相当的好用。为此,JavaScript的正则表达式语法就包含了一些特殊字符和转义序列来表示这些常用的类(大多数编程语言现在大都支持此类操作),使您可以很方便的使用。下面我把书中列出的字符类缩写来给大家列出来,方便阅读,呵。不过需要注意一下,有些字符类转义序列只匹配ASCII字符,还没有扩展到可以处理Unicode字符,可以显示地定义自己的Unicode字符类。

字符 匹配
[...] 位于括号之内的任意字符
[^...] 不丰括号之中的任意字符
. 除换行符和其他Unicode行终止符之外的任意字符
\w 任何ASCII单字字符,等价于[a-zA-Z0-9_]即,数字、字母、下划线
\W 任何ASCII非单字字符,等价于[^a-zA-Z0-9_]
\s 任何Unicode空白符
\S 任何非Unicode空白符,注意\w和\S不同
\d 任何ASCII数字,等价于[0-9]
\D 除了ASCII数字之外的任何字符,等价于[^0-9]
[\b] 退格直接量(特例)

上表所列这些“缩写”在我们处理正则表达式匹配条件时经常用到,如果有用到的同志以后忘记了可以来这里查一下(说给我自己的),至于为啥说[\b]退格符是特例,稍后的日志中我会说明的。这里不是挖坑,而是一句半句说不清楚。

另外再啰嗦一点,在这些缩写中,大家可以这样记,大写的字母和小写的字母其实就是”非”的关系。

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/08/02/1289/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

17 Responses to “JavaScript 正则表达式 字符类”

  1. #1 卢松松 回复 | 引用 Post:2009-08-02 21:17

    我没啥想法,我期待你的js早日学成!

    [回复]

  2. #2 simaopig 回复 | 引用 Post:2009-08-02 22:31

    @卢松松
    呵呵,谢谢,我会努力的学的。

    [回复]

  3. #3 回复 | 引用 Post:2009-08-02 23:05

    我也没啥想法,因为我晕代码。。

    [回复]

  4. #4 LAONB 回复 | 引用 Post:2009-08-02 23:05

    说道字符我想起来了,WP的密码在数据库里是一串字符,那是什么类型,有什么好办法能转换回我们正常理解的方式。
    例如登录密码忘记了,我可以手动修改数据库里面的值。

    [回复]

  5. #5 simaopig 回复 | 引用 Post:2009-08-03 07:54

    @LAONB
    这是不可能的,因为如果密码是明文的话会很不安全。
    这个应该是加密过的,具体加密方式我没有细看,想来应该是MD5吧。
    如果忘记密码,有方法可以更改的。你搜一下。呵呵。

    [回复]

  6. #6 simaopig 回复 | 引用 Post:2009-08-03 07:55

    @虾
    其实我也晕,呵呵。

    [回复]

  7. #7 LAONB 回复 | 引用 Post:2009-08-03 10:52

    @simaopig
    我之前的Beta二级域名做了伪静态,结果每次输密码都提示出错,实际是没发正常跳转到控制板,然后就点了忘记密码,原来是收不到邮件的。
    后来用绝对路径就进去了。 8)

    [回复]

  8. #8 要饭的 回复 | 引用 Post:2009-08-03 10:58

    方正听说js挺强大的

    [回复]

  9. #9 小Bee 回复 | 引用 Post:2009-08-03 11:52

    人过留名..雁过留声…

    [回复]

  10. #10 看海 回复 | 引用 Post:2009-08-03 13:18

    也不知道是我没用心学,还是怎么滴,正则表达式总是不会

    [回复]

  11. #11 simaopig 回复 | 引用 Post:2009-08-03 13:40

    @要饭的
    呃。写错别字,拉出去,一百大板。呵呵。

    [回复]

  12. #12 simaopig 回复 | 引用 Post:2009-08-03 13:40

    @看海
    我也是,经常忘。。这东西常时间不写肯定生疏的。

    [回复]

  13. #13 simaopig 回复 | 引用 Post:2009-08-03 13:41

    @LAONB
    呵呵,能进去就好。密码忘了总是麻烦。

    [回复]

  14. #14 免费小说 回复 | 引用 Post:2009-08-03 17:11

    就算是看天书,我也要来飘下……

    [回复]

  15. #15 simaopig 回复 | 引用 Post:2009-08-03 17:12

    @免费小说
    呵,谢谢熊。 :D :D

    [回复]

  16. #16 JiaCheng 回复 | 引用 Post:2009-08-04 13:58

    我是来喊你回家吃饭的!

    [回复]

  17. #17 simaopig 回复 | 引用 Post:2009-08-04 15:15

    @JiaCheng
    我倒是想回家吃饭。呼。。

    [回复]

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)