我有这个正则表达式(它不符合我的要求):/^.*\/(eu|es)(?:\/)?([^#]*).*/
实际上是 js 版本的: /^.*/(eu|es)(?:/)?([^#]*).*/
好吧,它没有做我想要的,当然可以。 :) 鉴于此网址:
- http://localhost/es -> [1] = es, [2] = ''
- http://localhost/eu/bla/bla#wop -> [1] = eu, [2] = 'bla/bla'
- http://localhost/eu/bla/eubla -> [1] = eu, [2] = 'bla'
前两个网址按预期工作。第三个没有做我想做的事。由于稍后会在 url 上找到“eu”,因此它会与第二个 eu 而不是第一个 eu 进行匹配。所以我希望它匹配这个:[1] = 'eu', [2] = 'bla/eubla'
我该怎么做?
谢谢。 :)
最佳答案
让第一个*
不贪婪
/^.\*?\/(eu|es)(?:\/)?([^#]\*).\*/
顺便说一句,你真的需要在 javascript 中转义 *
吗?这行不通吗?
/^.*?\/(eu|es)(?:\/)?([^#]*).*/
关于Javascript 正则表达式匹配第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1796571/