【问题标题】:Regular expression for wild card search in javascriptjavascript中通配符搜索的正则表达式
【发布时间】:2015-05-05 01:42:06
【问题描述】:

我有一个字符串为 SEARCH0000123456SEARCH000096834 并且我想使用通配符执行下面的搜索 *

  1. SEARC*2*6 - 应该匹配 SEARCH0000123456
  2. SEARC*9* - 应该匹配 SEARCH000096834
  3. *123* - 应该匹配 SEARCH0000123456
  4. *834 - 应该匹配 SEARCH000096834

所以,* 是应该匹配任何字符的通配符。

有什么方法可以在 javascript 中使用正则表达式来实现这一点

谢谢

【问题讨论】:

  • 请阅读任何可用的正则表达式教程。在第一页的某个地方,您将学习如何匹配任意字符。

标签: javascript regex filter wildcard


【解决方案1】:

只需将* 替换为.* 即可匹配正则表达式中的零个或多个字符。或.+ 匹配一个或多个字符。还要添加锚点,因为SEARC*2*6 glob 模式只会匹配以SEARC 开头的字符串,所以我们需要在这里使用起始锚点^

SEARC*2*6   - ^SEARC.*2.*6$
SEARC*9*    - ^SEARC.*9.*
*123*       - .*123.*
*834        - .*834$
SE.ARC*2*6  - ^SE\.ARC.*2.*6$
?E.ARC*2*6  - ^.E\.ARC.*2.*6$

【讨论】:

  • 比这复杂一点。你猜当用户输入SE.ARC*2*6时会发生什么?
  • 我想应该是 ^SE\.ARC.*2.*6 。是的,这很复杂。
  • 我知道。但是您提出的解决方案不适合这种情况。用户很容易通过无意中输入在正则表达式中有意义的字符来破坏您的方法。简单地将用户输入中的* 替换为.* 不是解决方案。
【解决方案2】:

Mozilla 对 JS 正则表达式有很好的介绍:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

你只需要使用.*来匹配0个或多个字符。

您可能希望.*? 不贪婪地匹配(例如.*?345 停止在“345”的第一个实例,而不是最后一个)。 `

【讨论】:

  • 感谢@Avinash Raj。您的解决方案解决了我的大部分情况:)
  • @Phantom,这些都为你解决了吗?如果是这样,您是否会考虑将其中一个标记为正确,或者发布您自己的解决方案来解决他们未解决的任何其他情况?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
  • 2010-12-15
  • 2019-07-29
  • 1970-01-01
相关资源
最近更新 更多