Javascript 正则表达式匹配第一次出现

标签 javascript regex

我有这个正则表达式(它不符合我的要求):/^.*\/(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/

相关文章:

python - 去除字符串中的逗号,用逗号和双引号包围/Python

javascript - 为什么物体的符号相反时会粘在边缘?

javascript - 需要有关如何实现 js/css 版本控制的建议

java - 用于将 SGML 转换为 XML 的正则表达式

regex - 如何在 Rust 中以惯用方式替换特定字符?

regex - bash:将 grep 正则表达式结果分配给数组

javascript - 如何使用 REGEX 替换 JavaScript 中字符串中的标记

javascript - 宏 |登录并循环(第二次循环)

javascript - learnyounode 杂耍异步解决方案不起作用

javascript - 如何在 <a> 标签中编写 JavaScript 代码