正则表达式无效的量词?
Posted
技术标签:
【中文标题】正则表达式无效的量词?【英文标题】:Regex Invalid quantifier? 【发布时间】:2016-10-24 17:44:41 【问题描述】:我正在使用带有 javascript 的正则表达式,但我遇到了一些问题,它返回给我Invalid quantifier ?
。
这是代码:
if(url.match(new RegExp('^https?://.+/foresee(?:-|_)surveydef\.js(?:\?)(.*)','g')) != null)
我读到了其他问题,我需要在 ?
字符之前添加一个 \
但它不能解决它......
if(url.match(new RegExp('^https\?://.+/foresee(\?:-|_)surveydef\.js(\?:\?)(.*)','g')) != null)
输入的url是http://marvel.com/
,我只是检查匹配。
【问题讨论】:
见***.com/questions/3713290/…。另外,你的输入字符串是什么?预期的行为是什么?可能存在几个问题(您正在使用带有match
的全局修饰符的正则表达式,这意味着所有捕获的值都将丢失。
你需要避开那些斜线。而且,鉴于您似乎正在尝试匹配 URL,我建议您也转义这些点。
好的,http://marvel.com/
不包含?
。使用 \\?
无济于事。有什么要求?匹配任何网址?
@WiktorStribiżew 可以匹配不同的 url。我需要检查 url 是否与正则表达式匹配。
@SebastianLenartowicz 我试过了,但错误仍然存在:'events\.foreseeresults\.com\/rec\/process\?(.*)','g'
【参考方案1】:
用以下代码修复它:
if(url.match(new RegExp('^https?://.+/foresee(?:-|_)surveydef\.js(\\?:\?)(.*)','g'))
【讨论】:
你在用(\\?:\?)
做什么?如果您的模式是静态的,为什么还要使用 RegExp 构造函数?您的问题仍然不清楚,因为您没有提供输入和预期的输出。匹配 ?
后跟可选的 :
没有多大意义。以上是关于正则表达式无效的量词?的主要内容,如果未能解决你的问题,请参考以下文章