javascript正则表达式

来源:互联网 发布:淘宝上传没生产许可证 编辑:程序博客网 时间:2024/06/10 13:00

     这两天看javascript权威指南时,看到了正则表达式,这是我之前一直没有去关注的点,现在时间空闲些了,准备系统的学习一遍,这里也做一个博客记录,也算是监督自己的一种方式吧。

1.正则表达式是干什么的

      在做项目的时候,我们经常会有一些字符串匹配的需求,譬如,判断邮箱,判断电话诸如此类的,而正则的作用就是通过一系列规定的字符来对特定字符串进行匹配。也就是说正则表达式的作用体现在判断一个字符串是不是符合一定的格式。

       譬如邮箱的正则  /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

通过这个字符串,我们就可以知道一个字符串是不是邮箱,从而达到邮箱验证的目的

2.JS中的正则表达式

    (1) perl的正则是perl的一大亮点也是一大难点,而我们JS中的正则则是perl正则的一个子集(但也有些语法特性不被ECMAScript支持),所以对于具有丰富perl编程经验的程序员来说,学习JS中的正则是小菜一碟。

     (2) JS中的正则直接量包含在一对斜杠(/)之间,就譬如邮箱正则的格式。

     (3) ES3中 同一段代码所表示的正则表达式直接量每次运算时都返回同一个对象,而ES5中则刚好相反,同一段代码所表示的正则表达式直接量每次运算返回的都是不同的对象。ES5的标准更符合开发者的期望,而且已经在浏览器中获得了比较好的支持。

3.JS正则语法(重点)

     (1).字符类:JS中字符类均被放进一对方括号中,譬如,/[abc]/和'a','b','c'中的任意一个都匹配。^ 是否定字符类,也就相当于'非',/[^abc]/和任意一            个非'a','b','c'的字符相匹配。有童鞋就要问了,若要表示a~z的所有字母,总不会把所有字母都写一遍吧?当然不需要,我们只要用好'-'就行                   了,/[a-z]/匹配a到z的任意一个小写字母,若要表示所有英文字母和数字,则正则是这样 /[a-zA-Z0-9]/

          以下列出JS正则的字符类。

                     [...]                 方括号内的任意字符

                     [^...]               不在方括号内的任意字符

                     .                     除换行符和其他Unicode行终止符之外的任意字符

                     \w                  任何ASCII字符组成的单词,等价于[a-zA-Z0-9]

                     \W                 任何不是ASCII字符的单词,等价于[^a-zA-Z0-9]

                     \s                   任何Unicode空白符

                     \S                   任何非Unicode空白符的字符,Unicode字符中包含了很多非ASCII的字符,所以此项不等于\w

                     \d                   任何ASCII数字,等价于[0-9]

                     \D                   除了ASCII数字之外的任何字符,等价于[^0-9]

                    [\b]                  退格直接量,这里有一点就是,[\b]在表示退格直接量时必须单独存在,否则\b的含义就会变成匹配单词边界(后面会讲               到)

                   其实记忆方法很简单 \+大写字母就是\+小写字母的'非'。



未完待续

参考文献: JavaScript权威指南第六版

原创粉丝点击