【JavaScript】43_正则表达式
【摘要】 正则表达式 正则表达式正则表达式用来定义一个规则通过这个规则计算机可以检查一个字符串是否符合规则或者将字符串中符合规则的内容提取出来正则表达式也是JS中的一个对象,所以要使用正则表达式,需要先创建正则表达式的对象new RegExp() 可以接收两个参数(字符串) 1.正则表达式 2.匹配模式 <script> let reg = new RegExp('a','i...
正则表达式
正则表达式
- 正则表达式用来定义一个规则
- 通过这个规则计算机可以检查一个字符串是否符合规则
或者将字符串中符合规则的内容提取出来
- 正则表达式也是JS中的一个对象,
所以要使用正则表达式,需要先创建正则表达式的对象
new RegExp() 可以接收两个参数(字符串) 1.正则表达式 2.匹配模式
<script>
let reg = new RegExp('a','i')//通过一个构造函数来创建一个正则表达式的对象
//使用字面量来创建正则表达式:/正则/匹配模式
reg = /a/i
reg = /\w/
reg = new RegExp('\w')
console.log(reg)
reg = new RegExp('a')// /a/表示,检查一个字符串中是否有a
// 通过正则表达式检查一个字符串是否符合规则
let str = "a"
let result = reg.test(str) // true
result = reg.test("b") // false
result = reg.test("abc") // true
result = reg.test("bcabc") // true
reg = /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/ // 匹配开始位置的a
re = /a$/ // 匹配结束位置的a
re = /^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)/ig
let 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 501789087
1 3到9之间 任意数字 x 9
*/
let re = /1[3-9]\d{9}/g
re = /(1[3-9]\d)\d{4}(\d{4})/g
let str =
"dajsdh13715678903jasdlakdkjg13457890657djashdjka13811678908sdadadasd"
let result
while (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>
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)