Javascript 字符串对象replace方法使用(字符串替换或正则替换)

项目中关于replace方法的使用在很多情况下都会出现,比较常见的就是用于字符串替换。


正则表达式的使用
在刚接触java语言的时候在项目开发中表单验证的模块常常用到,之后便一直在表单中用到。

这两天在做的一个项目中遇到一个问题,关于百度编辑器uediter中,插入视频链接后预览的时候视频无法播放,由于视频是放在我们项目的视频站点的,没有加载视频播放器,而编辑器预览时将外链自动生成了标签,导致无法播放。想到上传的视频都是统一的MP4格式,所以就决定使用replace将视频标签替换成h5的

编辑器解析出来的html如下


Javascript 字符串对象replace方法使用(字符串替换或正则替换)_第1张图片
QQ截图20161208162825.jpg

替换的思路是用正则匹配到embed标签中路径后缀为MP4的字符串,并将字符串替换为video。

var reg = /[\n\r\t]*]+?)src=['\"]([^'\"]+?[(\.mp4)|(\.mov)])['\"]([^>]+?)width=['\"](\d+?)['\"]([^>]+?)height=['\"](\d+?)['\"]([^>]+?)\/>[\n\r\t]*/g;
var ed_con = editor.getContent().replace(reg , '');

 ^  匹配输入字符串的开始位置  $匹配输入字符串的结束位置
 \   将下一个字符标记符、或一个向后引用、或一个八进制转义符,例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。 ---转义字符的概念
    
 [xyz]  字符集合,匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
 [a-z]  字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
 [^xyz]  负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”。

 *  匹配前面的子表达式任意次
 ()  将(和) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用。

 .点  匹配除\r回车符\n换行符之外的任何单个字符   
 +  匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
 ?  匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配每个“o”即4次匹配,而“o+”将只匹配1次即匹配“oooo”。

\w匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,这里的"单词"字符使用Unicode字符集。
{n}n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。

你可能感兴趣的:(Javascript 字符串对象replace方法使用(字符串替换或正则替换))