比如有如下文字:
北京今天20.3摄氏度,最高温度26度。
需要修改成如下:
北京今天<span>20.3</span>摄氏度,最高温度<span>26</span>度。
思路:
1.正则匹配出数字或者浮点数,然后修改其值。
2.js循环获取数字,进行修改,比较麻烦。
求正则实现方式
比如有如下文字:
北京今天20.3摄氏度,最高温度26度。
需要修改成如下:
北京今天<span>20.3</span>摄氏度,最高温度<span>26</span>度。
思路:
1.正则匹配出数字或者浮点数,然后修改其值。
2.js循环获取数字,进行修改,比较麻烦。
求正则实现方式
// 定义一段文字
var test = "北京今天20.3摄氏度,最高温度26度";
// 方法一
var x = test.replace(/\d+\.*\d+/g,function(keyword){
return "<span>"+keyword+"</span>"
});
console.log(x);
// 方法二
var y = test.replace(/(\d+\.*\d+)/g,"<span>$1</span>");
console.log(y);
replace api
replace是String的一个api,它返回一个替换后的字符串,但并不会对原字符串进行修改,所以要拿一个值去接受它的返回值。
replace第一个参数接受的是需要被替换的内容,第二个参数接受替换的内容(可以是一个字符串也可以是一个函数)方法一用的是函数,方法二用的是字符串。
正则表达式解释
由于这题的需要被替换的内容不是一个固定的字符串,所以用到了正则表达式,如果是一个固定的值,可以不用正则表达式,直接写固定的值就可以了。正则表达式的内容写在//两个斜杠的中间,//g后面的g是全局匹配的意思。这题的正则表达式的内容是:d+.d+。d的字符是正则表达式中的预定义字符,表示的是匹配一个数字,你写成[0-9]也是可以的,更多的预定义字符可以自己百度。至于+和则是正则表达式的量词。+表次匹配1到多次,*表示匹配0到多次。数值可以是整数不一定是小数所以小数点匹配了0到多次。.是因为.需要转译
方法一解释
替换的内容用了一个匿名函数 需要被替换的内容会传进keyword,在function内return修改后的值
上楼的word => <span>${word}</span>
和我写的这个意思其实是一样的,他把匿名函数替换成了箭头函数,用了模板字符串,这都是ES6的内容
方法二解释
方法二想突出的区别知识分组。正则表达式用可以用()括号进行分组,$1可以匹配到第一个分组的内容,也就是第一个括号的内容,例如/(a)(b)/g:如果有多个分组$1可以匹配到第一个分组的内容也就是a,$2可以匹配到第二个分组的内容也就是b
10 回答11.6k 阅读
2 回答3.1k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决