javascript - 请教一个正则表达式分组替换的问题
本文介绍了javascript - 请教一个正则表达式分组替换的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
我想过滤下面几种格式的文件:
fileName.ext'
fileName.ext"
fileName.ext?md5'
fileName.ext?md5"
统一替换为fileName.ext?newmd5'
or fileName.ext?newmd5"
目前正则写好了,但是我需要获取他结尾时候用的是'
还是"
时碰到了问题:
我的正则表达式如下(sg可能有转义处理,就直接塞到到代码了,代码高亮请忽略):
fileName.ext(['"]|\?[0-9a-zA-Z]*?(['"]))
分组是提取出来了,但是因为使用了分支,存储'or"的分组可能是第1组or第3组(从0组开始)
但是后面用js replace的时候,需要$1
or $3
,但是不确定,所以不清楚哪个分支。
这种情况应该怎么处理呢?
我有另外一种方式是从开头的字符串匹配。
(['"]).*?filename.ext(\1|\?[0-9-a-zA-Z]*?\1)
有没有什么更好的方法吗?比如不改变原先正则的情况下,选择需要的分组?或者在原正则上简单修改下,能实现?谢谢大家~
解决方案
/fileName.ext(\?\w+)?(['"])/
可以这样来分组
这篇关于javascript - 请教一个正则表达式分组替换的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文