如何编写可匹配多种带特殊前缀的xsshere特征字符串的正则表达式
正则表达式调整方案
问题原因
你原来的正则(?i)('|"|)(xsshere|<xsshere>)的前缀匹配规则仅支持空值、单引号、双引号三种场景,没有覆盖\、/两种前置字符的情况,所以无法匹配\'xsshere和/"xsshere两类字符串。
调整后正则
通用正则(支持行内不区分大小写标志):(?i)([\\\/]?['"])?(?:xsshere|<xsshere>)
如果是JavaScript环境使用,JS原生不支持行内(?i)写法,需要改用正则标志位:/([\\\/]?['"])?(?:xsshere|<xsshere>)/i
规则说明
(?i)/i标志:开启不区分大小写匹配,覆盖<XSSHERE>这类全大写的场景([\\\/]?['"])?:前缀匹配逻辑,整个前缀为可选项:- 可选匹配1个反斜杠
\或斜杠/ - 后续可选匹配1个单引号
'或双引号"
- 可选匹配1个反斜杠
(?:xsshere|<xsshere>):匹配核心主体,支持裸的xsshere或尖括号包裹的<xsshere>,非捕获组不会额外占用分组捕获位,不影响后续结果提取。
覆盖验证
调整后的正则可以匹配所有目标字符串:
<xsshere>'xsshere"xsshere\'xsshere/"xsshere<XSSHERE>
内容的提问来源于stack exchange,提问作者Vishnu Raghav
相关产品推荐
相关产品推荐

