需求
有一段文本如下:
1 | 我是文本 |
需要将里面所有的非图片url
提取出来并替换
实现
url
提取代码如下:
1 | let allReg = new RegExp("[^!]\\[.*\\]\\((http.+)\\)", "g"); |
url
替换;
1 | //比如将所有的链接替换成A |
RegExp对象介绍
1 | let reg=new RegExp("[^!]\\[.*\\]\\((http.+)\\)","g") |
参数:
第一个参数填入正则表达式, 第二个参数填入正则修饰符,其中g
表示全局匹配
正则表达式修饰符:
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
m | 执行多行匹配。 |
常用方法:
使用String
对象的match
方法匹配多个:
1 | let arr=data.match(reg); |
exec
方法 用于匹配单个:
1 | let reg=new RegExp("[^!]\\[.*\\]\\((http.+)\\)") |
在不加第二个参数g
的前提下, 重复执行exec方法, 始终返回第一个
如果加了g
,重复执行相当于遍历, 如下:
1 | let reg=new RegExp("[^!]\\[.*\\]\\((http.+)\\)","g") |
test
方法, 检查是否有符合匹配的存在:
1 | let reg=new RegExp("[^!]\\[.*\\]\\((http.+)\\)","g") |
String
对象的search方法也可以检查是否有符合匹配的存在:
1 | let index=data.search(reg); |
示例
从
url
中提取子域名1
2var url = "http://xxx.domain.com";
console.log(/[^.]+/.exec(url)[0].substr(7)); // logs "xxx"从一个单词中分离出
Unicode
字符1
2
3
4
5
6
7
8let text = "Образец text на русском языке";
let regex = /[\u0400-\u04FF]+/g;
let match = regex.exec(text);
console.log(match[1]); // prints "Образец"
let match2 = regex.exec(text);
console.log(match2[1]); // prints "на" [did not print "text"]
使用前建议使用正则表达式测试工具验证正则表达式是否可行
本文为作者原创 转载时请注明出处 谢谢
微信公众号二维码如下: