玩转js正则表达式与字符串

好用的网站

在线正则表达式测试
元字符

基本讲解

let str = '1234561 abcde'
let reg = /\d/g     // 定义正则表达式
let reg2 = /\d/    // 不加g
console.log(str.match(reg))  // [ '1', '2', '3','4', '5', '6', '1']
console.log(str.match(reg2)) // ['1']

后面加g代表匹配多次 \d 代表数字 \w 代表字母 更多符号参考

let str = '1234561 abcde'
let reg = /\d\d/g  // 两个相邻的数
console.log(str.match(reg)) // [ '12', '34', '56' ]

表达式写什么就匹配什么,里面挨着匹配的也挨着

let str = '123 abc +=-'
let reg = /[\d\w]/g  // 要么是数字 要么是字母 
let reg2 = /[^\d\w]/g // 不是数字也不是字母
console.log(str.match(reg))  // [ '1', '2', '3', 'a', 'b', 'c' ]
console.log(str.match(reg2)) // [ ' ', ' ', '+', '=', '-' ]

[ ] 代表里面的匹配其中一个 写在里面的是或关系 ^在 []里面是取反关系

let str = '123 1 1234 abc +=-'
let reg = /\d{3,4}/g // 匹配连续的数字 最少3个连一起 最多4个
console.log(str.match(reg)) // [ '123', '1234' ]

{m,n}不限制的话默认最多n个 n不写的话代表最多无限个 + 等价于{1,}

高级用法

let str = 'http://www.zhufengpeixun.cn/?lx=1&from=wx&b=12&c=13'
let reg = /([^?=&]+)=([^?=&]+)/g // 获取url参数
console.log(str.match(reg)) // [ 'lx=1', 'from=wx', 'b=12', 'c=13' ]

一步步来

 1.先看前半部分 /([^?=&]+)/g  匹配不是 =?& 的字符串, 长度1个或更多  下面是结果
[
 'http://www.zhufengpeixun.cn/',
 'lx',
 '1',
 'from',
 'wx',
 'b',
 '12',
 'c',
 '13'
]
2.  /([^?=&]+)=([^?=&]+)/g 后面还要有 = 并且 = 后也要求不是 =?& 的字符串

let str = 'sfgsdfgsertdgfsdfgsertwegdsfgertewgsdfgsdg';
function getMax2(str) {
  str = str.split('').sort().join('');// 把字符串进行排序
  let key = '',num = 0;
  str.replace(/(\w)\1*/g,function($0,$1){
  console.log(arguments)
    if($0.length > num){
      num = $0.length;
      key = $1;
    }
  })
  return{
    key,num
  }
}
getMax2(str);
let str = 'ddddddeeeeeffffffgggggggggrrrsssssssstttww';
let reg = /(\w)\1+/g // \1 代表第一个括号表达式的值 +换成*也可以
console.log(str.match(reg))
/**
[
 'dddddd', 'eeeee',
 'ffffff', 'ggggggggg',
 'rrr',    'ssssssss',
 'ttt',    'ww'
]
*/
let str = '1234567892';
let reg = /(\d{1,3})(?=((\d{3})*$))/g
console.log(str.match(reg)) // [ '1', '234', '567', '892' ]
console.log(str.replace(reg,'$1,')) // 1,234,567,892

let str = 'ad  as av aq';
str.replace(/(a)(\w)/g ,function($0,$1,$2){
	//console.log(arguments)
   console.log($0+'...'+$1+'...'+$2) 
})
/**
ad...a...d
as...a...s
av...a...v
aq...a...q
*/
let str = 'ad  as av aq';
let a = str.replace(/((a)(\w))/g ,'$1 +')
let b = str.replace(/(a)(\w)/g ,'$2 0')
console.log(a)
console.log(b)
/**
ad +  as + av + aq +
d 0  s 0 v 0 q 0
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值