你的浏览器不支持canvas

Enjoy life!

RegExp - 正则例子

Date: Author: JM

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。

其他链接:

1. 例1 统计 span 的个数

var str = '<span>coding</span> is ' +
  '<span>interesting</span>' +
  '<strong>coding</span> is ' +
  '<span>interesting</span>' +
  '<strong>coding</span> is ' +
  '<span>beijing</span>' +
  '<strong>coding</span> is ' +
  '<span>interesting</span>' +
  '<strong>coding</span> is' +
  ' <span>hello</span>\n';

var reg = /(<span>.*?<\/span>)/g; // 惰性匹配

var result = str.match(reg);

var r_len = result.length;

console.log(result);
console.log(r_len);
  • 结果如图

relationship-map

2. 例2 将非 P 元素都替换成 P 元素

  var str = '<div id="babalala">paragraph </div><p>哈哈哈</p><span class="yellow">hello jsonp!</span><strong>呵呵呵pi!</strong>';
  var reg = /<(\/?)(?!p).*?>/g;

  console.log(str.replace(reg, '<$1p>')); // 注意:$1指的是 "/"
  console.log(RegExp.$1); // "/"
  • 结果如图

relationship-map

3. 例3 将给定的数字转化成千分位的格式

  • 如:“10000”转化成“10,000”
  • 点击打开demo
  var str = '123456789';

  var reg = /(?=(?!\b)(\d{3})+$)/g;

  console.log(str.match(reg)); // ["", ""]
  console.log(str.replace(reg, ',')) // 123,456,789
  • 其实拿到这道题后,我们的第一想法是匹配位置,因为我们需要在特定的位置插入逗号。
  • 匹配位置的有:^$\b\B?=?!
  • 补充:
var str2 = '123456789';
console.log(str2.match(/()/g));
console.log(`replace:  ` + str2.replace(/()/g, ','));
  • 结果如图

relationship-map

4. 获取queryString中指定的值

function query (queryString,name) {
  const reg = new RegExp('(?:\\?|&)' + name + '=(.*?(?=&|$))');
  const result = reg.exec(queryString) || [];

  return result[1];
}

console.log('name:' + query('?name=jm&age=&sex=1', 'name')); // "jm"
console.log('age:' + query('?name=jm&age=&sex=1', 'age')); // ""
console.log('sex:' + query('?name=jm&age=&sex=1', 'sex')); // 1
console.log('sex:' + query('?', 'sex')); // undefined 

对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。