正则表达式:
1.创建方式:
(1)构造函数的形式:var reg = new RegExp('aaa')
(2)字面量的形式:var reg = /a/
- /./ 表示除了换行符(\r,\n)以外的任意字符
var reg = /./
console.log(reg.test('abc'))//true
console.log(reg.test('\r'))//false
注意:
如果要匹配点,不能直接写.,可以使用转义符/\./或者中括号[.]
3./\d/匹配任意数字:
var num = /\d/
console.log(num.test('dd'))//false
console.log(num.test('123'))//true
4./\D/匹配非数字
var reg3 = /\D/
console.log(reg3.test('34'))// false
console.log(reg3.test('34dfd'))// true
5./\w/匹配数字,字母,下划线任意字符
var reg4 =/\w/
console.log(reg4.test('14'))// true
console.log(reg4.test('dsfsd'))//true
console.log(reg4.test('_'))//true
6./\W/匹配非数字,字母,下划线任意字符
var reg5=/\W/
console.log(reg5.test('.'))// true
console.log(reg5.test('333'))// false
7./s/匹配空字符 /\n/,/\r/,/t/,/ /
var reg6 = /\s/
console.log(reg6.test('\n'))//true
console.log(reg6.test('\r'))//true
console.log(reg6.test('\t'))//true
console.log(reg6.test('sdf sdf '))//true
7./S/匹配非空字符 与/s/取反
8.\ 转义符
var reg7 = /\// // 匹配一个正斜杠
或者:var reg7 =/[/]/
console.log(reg7.test('/')) // true
var reg8 = /\\/ //匹配一个反斜杠
console.log(reg8.test('\\')) //true 字符串'\\'表示的是\反斜杠
var reg9 = /\./ // 匹配一个点
console.log(reg8.test('sdfd.')) //true
9.字符集合[]
var reg = /[123abc]/ //匹配123abc的任意字符
var reg = /[0-9]/ // 匹配0-9的任意字符
var reg = /[a-z]/ // 匹配小写字母a-z
var reg = /[A-Z]/ // 匹配大写写字母A-Z
var reg = /[a-zA-Z]/ // 匹配大写字母A-Z或a-z任意字符
var reg = /0-9a-z/ // 匹配0-9或a-z任意字符
// [^123] // 匹配非123
var reg = /[^123]/
console.log(reg.test('12')) //false
console.log(reg.test('1')) //false
console.log(reg.test('119')) //true
* 表示0次或多次
var reg = /\d*/
console.log(reg.test('28'))//true
边界
^字符串最左边
$字符串最右边
var reg = /^abc/
console.log(reg.test('abc123'))// true
console.log(reg.test('123abc'))// false
var reg = /abc$/;
console.log(reg.test('abc123'))// false
console.log(reg.test('123abc'))// true
console.log(reg.test('123bc'))// false
var reg = /^abc&/;//以abc开头并且以abc结尾
console.log(reg.test('abc'))//true
console.log(reg.test('123abc'))//false
// 简单判断手机号码
var reg = /^1\d\d\d\d\d\d\d\d\d\d$/
var reg = /^1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/
量词
(1) * 出现0次或多次
var reg = /\d*/
console.log(reg.test('abc123'))// true
(2) + 出现1次或多次
var reg = /1\d+/
console.log(reg.test('11'))// true
console.log(reg.test('1'))// false
(3) ? 出现0次或1次
var reg = /1\d+/
console.log(reg.test('11'))// true
console.log(reg.test('1'))// true
(4) {n} 出现n次
var reg = /123{3}}/ // 3出现3次
console.log(reg.test('12333'))// true
console.log(reg.test('123'))// false
var reg = /(123){3}}/ 123 出现三次
console.log(reg.test('123123123'))// true
console.log(reg.test('123123'))// false
(5) {n,} 至少出现n次
var reg = /123{3,}}/ 123 至少出现三次
console.log(reg.test('123123123'))// true
console.log(reg.test('123123123123'))// true
console.log(reg.test('123123'))// false
(6) {n,m}出现至m次
var reg = /123{3,5}}/ 123 至少出现三次
console.log(reg.test('123123123'))// true
console.log(reg.test('123123123123'))// true
console.log(reg.test('123123'))// false
| 或
var reg = /abc|123/ // 匹配abc或者123
console.log(reg.test('123'))//true
console.log(reg.test('abc'))//true
console.log(reg.test('sdfdfabc'))//true
var reg = /^(abc|123)$/ // 匹配abc开头或者123结尾
console.log(reg.test('sdfdfabc'))//true
console.log(reg.test('123sdfdf'))//true
() 分组
var reg = /(\d{3,4})-(\d{7,8})/ // 匹配手机号码
console.log(reg.test('0775-12346789'))//true
var arr = '0775-12346789'.match(reg)
arr[0] // 全部
arr[1] // 第一组:区号:0775
arr[2] // 第二组:号码12346789
urlParam() {
let url = 'https://www.iconfont.cn/collections/detail?spm=a313x.7781069.1998910419.d9df05512&cid=2706'
const param = {}
url.replace(/([^&=?]+)=([^&]+)/g, (m, $1, $2) => {
debugger
param[$1] = $2
}
)
return param
},
匹配把url的参数提取成一个对象
15.g 匹配全局
var aa = '[Object Array]'
aa.replace(/\[Object |\]/g,'') //"Array"
案例
1.去除字符串前后空格
let str = ' ffdsdf df '
str .replace(/^( ){1,}|( ){1,}$/g,'') // ffdsdf df
网友评论