js学习笔记70——正则表达式语法2
- .
- 检查一些特殊字符
- \w
- \W
- \d和\D
- \s和\S
- \b和\B
- 去除字符串的前后空格
.
<script>
var reg = /./;
console.log(reg.test("gvf"));
console.log(reg.test("\n"));
console.log(reg.test(""));
</script>
检查一些特殊字符
如果我们想检查字符中是否有点,则要用转义字符。(检查反斜杆也是一样)
<script>
var reg = /\./;
console.log(reg.test("gvf"));
console.log(reg.test("agdv.gda"));
console.log(reg.test(""));
</script>
换成用构造函数写?
<script>
var reg = new RegExp("\.");
console.log(reg.test("gvf"));
console.log(reg.test("agdv.gda"));
console.log(reg.test(""));
</script>
好像不行了。
因为构造函数的参数是一个字符串,而\是转义字符,所以得这么写:
<script>
var reg = new RegExp("\\.");
console.log(reg.test("gvf"));
console.log(reg.test("agdv.gda"));
console.log(reg.test(""));
</script>
\w
任意字母、数字或下划线。
<script>
var reg = /\w/;
console.log(reg.test("gvf"));
console.log(reg.test("123"));
console.log(reg.test("_1"));
</script>
\W
<script>
var reg = /\W/;
console.log(reg.test("gvf"));
console.log(reg.test("123"));
console.log(reg.test("_1"));
console.log(reg.test("&&&"));
</script>
\d和\D
<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>
\s和\S
<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>
\b和\B
假设我们想检查一个字符串是否含有单词child:
var reg = /child/;
console.log(reg2.test("child"));
console.log(reg2.test("dchildd"));
不符合预期,第二个明显不是单词child,要怎么做?
设置单词边界
<script>
var reg = /\bchild\b/;
console.log(reg.test("child"));
console.log(reg.test("1 child"));
console.log(reg.test("1 childd"));
</script>
去除字符串的前后空格
先看如下代码
<script>
var s = prompt("请输入姓名:");
console.log(s);
</script>
由于我输入的时候前后给加了空格,导致结果中多了很多空格。但是如果让用户重新输入姓名也挺费劲的,如何让计算机自动去掉空格呢?
用replace
<script>
var s = prompt("请输入姓名:");
console.log(s);
s = s.replace(/\s/g,"")
console.log(s);
</script>
这种写法有个问题,如果我的名字之间有空格,或者在其他应用中,某串字符里有空格,这样写会把中间所有的空格都给去除了。这并不是我们想要的,我们仅仅是要去除前面和后面的空格。要怎么办?
指定开头和结尾,并设置*号表示匹配任意数目。
<script>
var s = prompt("请输入姓名:");
console.log("开头"+s+"结尾");
s = s.replace(/^\s*|\s*$/g,"")
console.log("开头"+s+"结尾");
</script>
可以看到,小 欣前后的空格都被去掉了