我想在网址上执行正则表达式操作。我的网站上有这两条路线:
我使用正则表达式[0-9a-z\-]+
来匹配63000-cedex-01(注意63000-cedex-01可以是用连字符而不是空格格式化的任何邮政编码)。
现在当有人试图访问这样的网址时出现问题:
使用domain.tld /克莱蒙费朗/ IN-A-25公里的半径/
正则表达式会将此路线视为有效,这是我不想要的。
是否有可能告诉正则表达式搜索一个连字符分隔的字母数字模式,该模式不包含"在-25-km-radius"。
我尝试了这两个正则表达式并且他们不能工作:
((?!in-a-\d+-(km|mile|miles)-radius)|[0-9a-z\-]+)
(?(?=[0-9a-z\-]+)([0-9a-z\-]+)|(in-a-\d+-(km|mile|miles)-radius))
修改
基本上在我的MVC框架的路由文件上我有这两条路线:
/事件/ {状态:(正在进行|过去|即将到来)} / {category_slug:[AZ - ] +} - 事件/中/ {city_slug:[AZ - ] +} / {postal_code_slug:[0-9a- ž - ] +} /
匹配路径,如:
/事件/正在进行/音乐事件/中/克莱蒙费朗/ 63000-CEDEX-01 /
和
/事件/ {状态:(正在进行|过去|即将到来)} / {category_slug:[AZ - ] +} - 事件/中/ {city_slug:[AZ - ] +} / {postal_code_slug:[0-9a- ž - ] +} /在-α-{半径:\ d +} - {单位:(千米|英里|英里)} - 半径/
匹配路径,如:
/事件/即将到来/膜事件/中/贝弗利丘/ 90210 / IN-A-40英里半径/
不幸的是,第一条路线也匹配:
/事件/过去/漫画和 - 动画事件/中/蒙特利尔/ IN-A-200公里的半径/
修改
正则表达式应匹配如下字符串:
9600
AX-85000
ad327
36505-962
biqq-1ZZ
gx11-1aa
和不匹配这些字符串:
在-A-200公里的半径
在-A-1英里半径
在-A-85英里半径
答案 0 :(得分:0)
是否可以告诉正则表达式搜索分隔符号 不包含“半径25公里”的字母数字图案。
试试这个:
\A(?!in-a-25-km-radius)[\w-]++