将两个正则表达式组合在一起
Grouping two regular expressions together
我有这个正则表达式:
((?:website.com'/video'/)('d+))|((?:video_id=)('d+))
它与我需要的模式匹配得很好(例如:http://website.com/video/1337,http://website.com/video/?video_id1337)。
但是有时我可能需要从 url 中提取令牌(令牌并不总是存在),因此,将 http://website.com/video/?video_id1337&token=1337video 示例 URL。
我有一个单独的正则表达式可以提取令牌:/(?:token=)('w+)/
有效,但我尝试将两个正则表达式分组在一起,第二个正则表达式停止工作,这是我尝试对它们进行分组的方式:
((?:website.com'/video'/)('d+))|((?:video_id=)('d+)|(?:token=)('w+))
如何正确对它们进行分组,以便它们都正常工作?
你过度考虑了你的匹配。 您要匹配的是:
-
website.com/video/
,后跟 -
也许
?video_id
,然后是 - 视频的 ID 号,后跟
- 也许是一个令牌
这将转换为:
-
website'.com/video/
-
(?:'?video_id)?
-
('d+)
(保存到组) -
(?:[?&]token=(.*))?
(?
或&
,=
后的所有内容都保存到组中)
最终结果:
website'.com/video/(?:'?video_id)?('d+)(?:[?&]token=(.*))?
你的正则表达式应该是
(?:website.com/video/)(('d+)|([?]video_id('d+))([&]token=('d+))?)
并通过添加"g"修饰符切换到全局搜索
var result = mystring.match(/(?:website.com'/video'/)(('d+)|([?]video_id('d+))([&]token=('d+))?)/g);
相关文章:
- 组合angularjs表单字段的两个正则表达式
- 在 JS 中组合两个正则表达式
- 在 JavaScript 中组合正则表达式
- 用于在组合文件中查找 AMD 定义呼叫的正则表达式
- 如何在字符串上组合JS replace()方法中的3个正则表达式模式
- 两个正则表达式的组合
- 如何组合以下正则表达式
- 正则表达式“gi”修饰符的组合不适用于单个单词
- 将两个正则表达式组合在一起
- 两个正则表达式的组合
- 组合2个正则表达式,其中一个使用OR运算符进行精确匹配
- 如何创建正则表达式javascript函数来匹配特定的字符串组合
- 将正则表达式组合为空格和换行符
- 正在尝试组合exlude和include正则表达式
- 在Javascript中组合正则表达式
- 在OR中将正则表达式组合在一起
- 用于字符串组合和序列规则的正则表达式角2
- 使用or组合两个正则表达式条件
- 用于字母/数字组合的正则表达式
- 正则表达式 - 组合正则表达式 - 字符串的开头和结尾