js学习笔记70——正则表达式语法2

  • .
  • 检查一些特殊字符
  • \w
  • \W
  • \d和\D
  • \s和\S
  • \b和\B
  • 去除字符串的前后空格


.

jquery 正则匹配斜杠 js正则表达式反斜杠_特殊字符

<script>
        var reg = /./;
        console.log(reg.test("gvf"));
        console.log(reg.test("\n"));
        console.log(reg.test(""));
    </script>

jquery 正则匹配斜杠 js正则表达式反斜杠_字符串_02

检查一些特殊字符

如果我们想检查字符中是否有点,则要用转义字符。(检查反斜杆也是一样)

<script>
        var reg = /\./;
        console.log(reg.test("gvf"));
        console.log(reg.test("agdv.gda"));
        console.log(reg.test(""));
    </script>

jquery 正则匹配斜杠 js正则表达式反斜杠_javascript_03


换成用构造函数写?

<script>
        var reg = new RegExp("\.");
        console.log(reg.test("gvf"));
        console.log(reg.test("agdv.gda"));
        console.log(reg.test(""));
    </script>

jquery 正则匹配斜杠 js正则表达式反斜杠_构造函数_04


好像不行了。

因为构造函数的参数是一个字符串,而\是转义字符,所以得这么写:

<script>
        var reg = new RegExp("\\.");
        console.log(reg.test("gvf"));
        console.log(reg.test("agdv.gda"));
        console.log(reg.test(""));
    </script>

jquery 正则匹配斜杠 js正则表达式反斜杠_构造函数_05

\w

jquery 正则匹配斜杠 js正则表达式反斜杠_javascript_06


任意字母、数字或下划线。

<script>
        var reg = /\w/;
        console.log(reg.test("gvf"));
        console.log(reg.test("123"));
        console.log(reg.test("_1"));
    </script>

jquery 正则匹配斜杠 js正则表达式反斜杠_jquery 正则匹配斜杠_07

\W

jquery 正则匹配斜杠 js正则表达式反斜杠_javascript_08

<script>
        var reg = /\W/;
        console.log(reg.test("gvf"));
        console.log(reg.test("123"));
        console.log(reg.test("_1"));
        console.log(reg.test("&&&"));
    </script>

jquery 正则匹配斜杠 js正则表达式反斜杠_jquery 正则匹配斜杠_09

\d和\D

jquery 正则匹配斜杠 js正则表达式反斜杠_字符串_10

<script>
        var reg = /\d/;
        var reg2 = /\D/;
        console.log(reg.test("gvf"));
        console.log(reg.test("123"));
        console.log(reg2.test("gvf"));
        console.log(reg2.test("123"));
    </script>

jquery 正则匹配斜杠 js正则表达式反斜杠_特殊字符_11

\s和\S

jquery 正则匹配斜杠 js正则表达式反斜杠_字符串_12

<script>
        var reg = /\s/;
        var reg2 = /\S/;
        console.log(reg.test("  "));
        console.log(reg.test("1"));
        console.log(reg.test("1 "));
        console.log(reg2.test("  "));
        console.log(reg2.test("1"));
        console.log(reg2.test("1 "));
    </script>

jquery 正则匹配斜杠 js正则表达式反斜杠_jquery 正则匹配斜杠_13

\b和\B

jquery 正则匹配斜杠 js正则表达式反斜杠_javascript_14


假设我们想检查一个字符串是否含有单词child:

var reg = /child/;
        console.log(reg2.test("child"));
        console.log(reg2.test("dchildd"));

jquery 正则匹配斜杠 js正则表达式反斜杠_特殊字符_15


不符合预期,第二个明显不是单词child,要怎么做?

设置单词边界

<script>
        var reg = /\bchild\b/;
        console.log(reg.test("child"));
        console.log(reg.test("1 child"));
        console.log(reg.test("1 childd"));
    </script>

jquery 正则匹配斜杠 js正则表达式反斜杠_特殊字符_16

去除字符串的前后空格

先看如下代码

<script>
        var s = prompt("请输入姓名:");
        console.log(s);
    </script>

jquery 正则匹配斜杠 js正则表达式反斜杠_javascript_17


jquery 正则匹配斜杠 js正则表达式反斜杠_字符串_18


由于我输入的时候前后给加了空格,导致结果中多了很多空格。但是如果让用户重新输入姓名也挺费劲的,如何让计算机自动去掉空格呢?

用replace

<script>
        var s = prompt("请输入姓名:");
        console.log(s);
        s = s.replace(/\s/g,"")
        console.log(s);
    </script>

jquery 正则匹配斜杠 js正则表达式反斜杠_特殊字符_19


这种写法有个问题,如果我的名字之间有空格,或者在其他应用中,某串字符里有空格,这样写会把中间所有的空格都给去除了。这并不是我们想要的,我们仅仅是要去除前面和后面的空格。要怎么办?

指定开头和结尾,并设置*号表示匹配任意数目。

<script>
        var s = prompt("请输入姓名:");
        console.log("开头"+s+"结尾");
        s = s.replace(/^\s*|\s*$/g,"")
        console.log("开头"+s+"结尾");
    </script>

jquery 正则匹配斜杠 js正则表达式反斜杠_构造函数_20


jquery 正则匹配斜杠 js正则表达式反斜杠_字符串_21

可以看到,小 欣前后的空格都被去掉了