正则笔记


获取字符串第一个字符:
var str = “Hello World”;
// H
alert(str.substr(0, 1));
// d
alert(str.substr(-1));
获取字符串最后一个字符:
var str = “Hello World”;
// H
alert(str.charAt(0));
// d
alert(str.charAt(str.length - 1));

今天遇见一个群友需要过滤一个正则问题。把 '^11^'过滤为 <span>11</span>;

正确

第一种 js + 正则

1
2
3
4
5
6
7
8
9
var test = '^11^';
var text = test.replace(/\^/g,'');
var span1 = '<span>';
var span2 = '</span>';
var real = '';
if( test.substr(0, 1) == '^' && test.substr(-1) == '^' ){
real = span1 + text + span2
}
console.log(real);

第二种 正则

1
2
3
var test11 = '^11^';
var text11 = test11.replace(/\^(.*?)\^/,'<span>$1</span>');
console.log(text11)

正确

接着群里有小伙伴说,没事尽量别用正则,因为用了正则会有问题,然后还会内存泄露什么的,在上面的两种方法里面能明显看出 ,第二种更加简便效率更高。
但是假如数据变为了 '^1^1^'

正确
可以看出来两种方法都会出问题

1
2
3
4
5
6
7
8
9
var test = '^11^';
var text = test.replace(/\^/g,'');
var span1 = '<span>';
var span2 = '</span>';
var real = '';
if( test.substr(0, 1) == '^' && test.substr(-1) == '^' ){
real = span1 + text + span2
}
console.log(real);

第二种 正则

1
2
3
var test11 = '^11^';
var text11 = test11.replace(/\^(.*?)\^/,'<span>$1</span>');
console.log(text11)

0%