Regex 用于匹配具有4-6位ID的URL的正则表达式
我正在尝试匹配以Regex 用于匹配具有4-6位ID的URL的正则表达式,regex,regex-negation,regex-lookarounds,regex-group,regex-greedy,Regex,Regex Negation,Regex Lookarounds,Regex Group,Regex Greedy,我正在尝试匹配以“example.com/”开头,后跟4-6位数字的URL,并且下一个字符不是数字(如果有下一个字符) 例如,“example.com/12345”应该匹配 “example.com/1234567”不应匹配 “example.com/123456g7”应该匹配 我尝试了“example.com/(\d{4,6})。*”但是当我给它“example.com/1234567”这是不正确的时,它匹配 我如何解决这个问题 匹配4到6个数字后,只需对数字进行负前瞻: example.co
“example.com/”
开头,后跟4-6位数字的URL,并且下一个字符不是数字(如果有下一个字符)
例如,“example.com/12345”
应该匹配
“example.com/1234567”
不应匹配
“example.com/123456g7”
应该匹配
我尝试了“example.com/(\d{4,6})。*”
但是当我给它“example.com/1234567”
这是不正确的时,它匹配
我如何解决这个问题 匹配4到6个数字后,只需对数字进行负前瞻:
example.com\/\d{4,6}(?!\d).*
另一种方法
^example\.com/(\d{4,6})(?:\d.*)$
此表达式添加附加边界只是为了安全地传递所需的URL:
^(https?:\/\/(www.)?)(example\.com)\/(?:[0-9]{4,6})?([a-z].*)?$
如果你愿意,你可以减少边界。在这里,我们可以添加几个捕获组以便于调用
$
是使不希望的URL输入失败的键
正则表达式
如果这不是您想要的表达式,您可以在中修改/更改表达式
正则表达式电路
您还可以在以下位置可视化您的表达式:
JavaScript演示
const regex=/^(https?:\/\/(www.))(example\.com)\/(?:[0-9]{4,6})([a-z].*)$/gm;
常量str=`http://example.com/12345
https://example.com/123456g7
http://www.example.com/12345
https://www.example.com/123456g7
http://www.example.com/12345
https://www.example.com/123456g7
http://www.example.com/123456adfasdfasdf98989898
https://www.example.com/123456g7adfadfa0909009
http://example.com/1234567
https://example.com/1234567`;
让m;
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
//可以通过'm`-变量访问结果。
m、 forEach((匹配,组索引)=>{
log(`Found match,group${groupIndex}:${match}`);
});
}(?:\D.*)
中的冒号是什么意思?@user101-它是3个字符的(?:
非捕获组构造开头的一部分。在这种情况下,它用于告诉引擎它的内容\D.
,因为组是可选的。