我有一个跟随此网址格式的字符串
https://www.examples.org/activity-group/8712/activity/202803
// note : the end ending of the url can be different
https://www.examples.org/activity-group/8712/activity/202803?ref=bla
https://www.examples.org/activity-group/8712/activity/202803/something
我正在尝试编写匹配
的正则表达式https://www.examples.org/activity-group/{number}/activity/{number}*
{number} 是一个长度为1到10的整数。
如何定义检查字符串模式的正则表达式并检查数字是否在字符串中的正确位置?
背景:在Google表单中,为了验证答案,我想强制人们以这种格式输入网址。因此使用这个正则表达式。
对于不匹配该格式的Url,正则表达式应返回false。例如:https://www.notthesite.org/group/8712/activity/astring
我经历了几个例子,但只有当字符串中存在数字时它们才匹配。
示例来源:
答案 0 :(得分:1)
issubclass
^https:\/\/www\.examples\.org\/activity-group\/[0-9]{1,10}\/activity\/[0-9]{1,10}(\/[a-z]+)*((\?[a-z]+=[a-zA-Z0-9]+)(\&[a-z]+=[a-zA-Z0-9]+)*)*$
- 字符串开头^
- 转义字符\
- 数字[0-9]
- 前一项和十项之间{1,10}
- 允许其他网址(\/[a-z]+)*
- 使用((\?[a-z]+=[a-zA-Z0-9]+)(\&[a-z]+=[a-zA-Z0-9]+)*)*
允许查询参数包含第一个参数,使用?
包含所有其他参数&
- 字符串结尾这假设URL段和查询参数键仅为小写字母。查询参数值可以是小写字母,大写字母或数字。
答案 1 :(得分:1)
您可以使用
https?:\/\/(?:[^/]+\/){2}(\d+)\/[^/]+\/(\d+)
<小时/>
细分,这说:
https?:\/\/ # http:// or https://
(?:[^/]+\/){2} # not "/", followed by "/", twice
(\d+) # 1+ digits
\/[^/]+\/ # same pattern as above
(\d+) # the other number
您需要分别使用群组1
和2
https:\/\/[^/]+\/activity-group\/(\d+)\/activity\/(\d+)
哪些内容
https:\/\/[^/]+ # https:// + some domain name
\/activity-group\/ # /activity-group/
(\d+) # first number
\/activity\/ # /activity/
(\d+) # second number
查看另一个demo on regex101.com。
答案 2 :(得分:0)
可能你需要这样的东西:
(http[s]?:\/\/)?www.examples.org\/activity-group\/(\d{1,10})\/activity\/(\d{1,10})([\S]+?)$
其中:
(http[s]?:\/\/)?
匹配任何 http:// 或 https:// 部分。www.examples.org
是您的域名。(\d{1,10})
将匹配第一个整数,最大len为10(在 activity-group 之后)。(\d{1,10})
将匹配活动之后的第二个整数。([\S]+?)$
将匹配第二个数字后的任何可选数据,直到找到新行,假设您使用带有\m
的多行标记。希望它有所帮助!