一、概念语法介绍
英文名 regular expression(简写regex),由字母数字特殊符号构成的描述字符串模式的表达式。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
1.功能
1.模糊匹配。2.文本的检索。3.替换功能。
2.创建方式
构造方法:
var reg = new RegExp(‘表达式’)第二个参数修饰符 i忽略大小写 m多行匹配 g全文匹配
字面量 隐式 直接量
var reg = /表达式/修饰符
3.正则表达式的常用方法
1.test(str)
返回true匹配 false不匹配
2.exec(str)
找到返回数组,否则返回null
4.支持正则的字符串的方法
1.replace() replaceAll()
2.split()
3.match()
1 2
| "http://www.baidu.com?name=张三&age=19".match(/(\?|&)\w+=[\u4e00-\u9fa5\w#]+/g)
|
4.search()
返回字符串中第一个与regexp相匹配的子串的起始位置。如果没有找到,返回-1。
不执行全局匹配,自动忽略g。同时忽略regexp的lastIndex值,总是从字符串的开始进行检索。
二、如何写正则表达式
元字符(特殊字符)
1 2 3 4 5 6 7 8 9 10 11 12
| ^ [] [^...] \d \D \w \W . \b \B () $
|
非打印字符
限定符
1 2 3 4 5 6
| {6} {6,10} {6,} ? + *
|
转义字符
1 2
| 语法: \元字符 这些元字符需要转义 [] {} () ? * + / ^ & . |
|
特例
1 2 3
| [\u4e00-\u9fa5] [\x00-\xff] [^\x00-\xff]
|
分组
() $1
三、正则表达式的一些例子,可做参考
1.将一个汉字统计为两个字符
1 2 3
| const reg = /[\u4e00-\u9fa5]/g let str1 = str.replace(reg,'**') console.log(str1.length)
|
2.判断是否为全数字
1 2 3 4
| const reg = /\D/ if(!reg.test(pwd)){ alert('密码不能全为数字') }
|
3.字符串去重
1 2 3
| let str = 'aaabbbccccdddd' let res = str.replace(/(.)(\1)+/g,function($1,$2,$3){return $2}) console.log(res)
|
4.将数字改为千分形式
1
| '12456.33'.replace(/\B(?=(\d{3})+(?!\d))/g,",")
|
5.判断一个串是否符合规则
1 2 3 4 5 6 7 8 9
| {validator:(rule, value, callback) => { var reg = /^[0-9a-zA-Z]*$/g if (!reg.test(value)) { callback('只能输入数字字母') } callback() },trigger: 'blur'}
|
6.一段文字替换话题为高亮
1 2 3 4 5 6 7
| '#发发 发 adf #3阿斯顿发 #发发 #找我玩 啊发发'.replace(/(#[^#\s]\S*)/g,`<$1>`)
'#发 发# ##发 adf # 发不发# ##找#我玩# 啊发发'.replace(/(#[^#\s]*#\s)/g,`<$1>`)
|