正则表达式用于文本提取

时间:2017-06-20 13:30:02

标签: javascript regex

请你帮我正则表达式。我是新手。

我的要求是我想从以下网址中提取车辆号码(即123456789):

mysite.com/resource?slk=121&ops=rewww&from=kld&to=aop&search=things&validVehicle=sdfdsdff-sdfdf-sddf%3AVX%3ALNCX%3A123456789%3AOPW%3ALOS

我尝试了以下表达式:

[&?]{1}validVehicle[=]{1}[^&]*[%3A]{1}([^%&]+)

但它给出的结果无效。你能帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

纯正的正则表达式解决方案:

[&?]validVehicle=[^&]*(\d{9})

或者,如果您确定它们出现在%3A之后并且没有跟随数字:

[&?]validVehicle=[^&]*%3A(\d{9})(?!\d)

请参阅this regex demoanother regex demo。您寻求的价值在第1组。

<强>详情:

  • [&?] - ?&
  • validVehicle= - 文字子字符串
  • [^&]* - &以外的任何符号,直至最后一个
  • %3A - 文字子字符串
  • (\d{9}) - 第1组:9位
  • (?!\d) - 未跟随数字。

答案 1 :(得分:0)

“结构”approach可能会使用那些“%3a”冒号作为模式的分隔符,并结合非贪婪的通配符.*(这匹配第四个由分隔符%3a定义的'validVehicle'字段,并假设此结构不会更改):

[&?]validVehicle=(?:.*?%3a){3}(.*?)%3a

这种方式的效用与已建议的\d{9}模式的实用性实际上取决于您对传入数据的确切了解。这些模式肯定会匹配该分隔值的其他字段中的九位数。

相关问题