湘潭学校网站建设 磐石网络专注yahoo搜索
正则表达式
正则表达式
- 正则表达式用来定义一个规则
- 通过这个规则计算机可以检查一个字符串是否符合规则
或者将字符串中符合规则的内容提取出来
- 正则表达式也是JS中的一个对象,
所以要使用正则表达式,需要先创建正则表达式的对象
new RegExp() 可以接收两个参数(字符串) 1.正则表达式 2.匹配模式
<script>let reg = new RegExp('a','i')//通过一个构造函数来创建一个正则表达式的对象//使用字面量来创建正则表达式:/正则/匹配模式reg = /a/ireg = /\w/reg = new RegExp('\w')console.log(reg)reg = new RegExp('a')// /a/表示,检查一个字符串中是否有a// 通过正则表达式检查一个字符串是否符合规则let str = "a"let result = reg.test(str) // trueresult = reg.test("b") // falseresult = reg.test("abc") // trueresult = reg.test("bcabc") // truereg = /a/console.log(result);</script>
语法
1.在正则表达式中大部分字符都可以直接写 2.| 在正则表达式中表示或 3.[] 表示或(字符集) [a-z] 任意的小写字母 [A-Z] 任意的大写字母 [a-zA-Z] 任意的字母 [0-9]任意数字 4.[^] 表示除了 x 除了x
- . 表示除了换行外的任意字符
- 在正则表达式中使用\作为转义字符
- 其他的字符集 \w 任意的单词字符 [A-Za-z0-9 ] \W 除了单词字符 [^A-Za-z0-9] \d 任意数字 [0-9] \D 除了数字 0-9 \s 空格 \S 除了空格 \b 单词边界 \B 除了单词边界
- 开头和结尾 ^ 表示字符串的开头 $ 表示字符串的结尾
<script>let re = /abc|bcd/re = /[a-z]/re = /[A-Z]/re = /[A-Za-z]/re = /[a-z]/i // 匹配模式i表示忽略大小写re = /[^a-z]/ // 匹配包含小写字母以外内容的字符串re = /./re = /./re = /\w/re = /^a/ // 匹配开始位置的are = /a$/ // 匹配结束位置的are = /^a$/ // 只匹配字母a,完全匹配,要求字符串必须和正则完全一致re = /^abc$/let result = re.test('aa')console.log(result)</script>
量词
{m} 正好m个
{m,} 至少m个
{m,n} m-n个
- 一个以上,相当于{1,}
- 任意数量的a
? 0-1次 {0,1}
<script>let re = /a{3}/re = /^a{3}$/re = /^(ab){3}$/re = /^[a-z]{3}$/re = /^[a-z]{1,}$/re = /^[a-z]{1,3}$/re = /^ba+$/re = /^ba*$/re = /^ba?$/let result = re.test("baa")console.log(result)</script>
re.exec()
- 获取字符串中符合正则表达式的内容
<script>let str = "abcaecafcacc"//提取出str中复合axc格式的内容//g 表示全局匹配let re = /a(([a-z])c)/iglet result = re.exec(str)console.log(result)while(result){console.log(result[0],result[1],result[2])result = re.exec(str)}</script>
练习
<script>/* dajsdh13715678903jasdlakdkjg13457890657djashdjka13811678908sdadadasd用自己的语言来把描述出来1 3 5017890871 3到9之间 任意数字 x 9*/let re = /1[3-9]\d{9}/gre = /(1[3-9]\d)\d{4}(\d{4})/glet str ="dajsdh13715678903jasdlakdkjg13457890657djashdjka13811678908sdadadasd"let resultwhile (result = re.exec(str)) {// console.log(result[0], result[1], result[2])console.log(result[1]+"****"+result[2])}re = /^1[3-9]\d{9}$/console.log(re.test("13456789042"))</script>