正则表达式的简单入门

最近,在学习的过程中难免总是碰到一些正则表达式。尤其是在书写构建工具的配置文件的时候。所以,特意花时间学习了一番。怕忘记,一博文,留记忆。

正则表达式有2种写法。 一种是javascript语言风格的,一种是Perl语言风格。如下:

var re = new RegExp('a','i');  //javascript风格
var re2 = /a/i;                    //Perl风格

在webpack glup fis3的配置文件中,几乎全部都是Perl风格。

一、字符类。

随便书写一段字符串,然后匹配当中的adc字符。并将他们改成 "换"。

var str = '12dajs k43f lksd 433';
alert(str.replace(/[adc]/g,'换'));

结果如图:


字符串里面所有的abc都被改成了 “换”。

扫描二维码关注公众号,回复: 9824492 查看本文章

这里 [ ]的意思就是匹配 括号里面的内容。 /g 表示的是全局匹配。

var str = '12dajs k43f lksd 433';
alert(str.replace(/[^adc]/g,'换'));

可以看到字符串里面除的adc都被改成了 “换”。当然这里没有c。

这里 ^的意思就是匹配括号以外的内容。

var str = '12dajs k43f lksd 433';
alert(str.replace(/./g,'换'));

当我把匹配规则改成了 .  字符串里面所有的东西都被替换了,其中包括空格部分

  .   所代表的意思就是 除换行符和其他终止符之外的任意字符

var str = '12dajs k43f lksd 433';
alert(str.replace(/\w/g,'换'));


将匹配规格改成了 \w 这就就把字符串里面的非空格部分 全部替换了。

\w  是个转义的字符 它代表了a-zA-Z0-9 相当于[a-zA-Z0-9]

有/w 。就有/W (前面的小写,后面的大写) 将匹配格式改成/W 的话,就会如下图。


很明显看到 空格部分全部被替换了。 

\W 代表了除了 a-zA-Z0-9以外的字符。相当于[^a-zA-Z0-9]

 接下来,我就不上图了。直接给出 规则代表的意思。 有兴趣的同学,可以自己试验一边。当然我也会放一些源码到自己的GitHub上面。

\s 代表空白字符 。\S代表非空白字符 (tips:与\w的意义是不同的)   \d 代表数字(等价于[0-9])\D代表非数字以外的任何字符([^0-9])

[\b] 退格直接量

二、重复字符语法。

1、{n,m} 匹配前一项最少出现n次,最多出现m次

2、{n,} 匹配前一项最少出现n次,多则不限

3、{n} 匹配前一项出现n次。

4、?匹配前一项出现0次或者1次,简单说:就是前一项可有可无。与{0,1}同样的意义

5、+ 匹配前一项出现1次或者多次,等价于{1,} 个人理解就是若干。

6、* 匹配前一项0次或者多次,等价于{0,}

个人感觉 * 和 . 这两个匹配字符,还是少用较好 。 因为 /a*/g  是可以匹配到bbb的字符 。 /./g 能匹配到太多字符 有点类似css里面 * 号,有点通配符的意思。感觉用多了会出事。当然大神自便。

三、正则修饰符。

前面我们可以看到 每个正则后面都加了/g 。 g---global的缩写 代表着全局匹配。否则正则匹配到第一个就不执行了。

/i   i--ignore的缩写 代表着 忽略大小写。

/m m--multiple 代表多行匹配。

四、最后说一点。

因为正则匹配一段字符的时候,只要字符中间有满足的部分 就会返回true 。比如:匹配 java字符串 /java/g    如果这样写的话 javascript也会满足 匹配规则。

为了避免误会,所以 有了^ 和 $ 。 ^表示行首 $表示行尾 /^java$/g 。这样javascript就不会被匹配到!  如下代码:

var str = 'javascript';
var re = /java/;
var re2 = /^java$/;
alert(re.test(str))     //true
alert(re2.test(str))     //false
其实关于正则的教程还有很多。我只是总结了一些常用的。有兴趣的童鞋可以翻看 大犀牛 的第10章。

下一篇 我将 做几个实例demo! 谢谢!

发布了47 篇原创文章 · 获赞 61 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/u011456552/article/details/56855984