JavaScript中用于通配符搜索的正则表达式

3
我有一个字符串为 SEARCH0000123456SEARCH000096834,我想使用通配符*执行以下搜索:
  1. SEARC*2*6 - 应匹配 SEARCH0000123456
  2. SEARC*9* - 应匹配 SEARCH000096834
  3. *123* - 应匹配 SEARCH0000123456
  4. *834 - 应匹配 SEARCH000096834
因此,*是通配符,可匹配任何字符。
有没有办法在javascript中使用正则表达式来实现这一点?
谢谢

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

8

只需将*替换为.*以在正则表达式中匹配零个或多个字符。或者使用.+来匹配一个或多个字符。此外,还需要添加锚点,因为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 会发生什么? - Tomalak
我认为应该是 ^SE\.ARC.*2.*6。是的,这很复杂。 - Avinash Raj
1
我知道。但是你提出的解决方案并没有考虑到这一点。用户很容易无意中输入在正则表达式中具有含义的字符,从而轻松破坏你的方法。仅仅将用户输入中的 * 替换为 .* 并不是一个解决方案。 - Tomalak

3

谢谢@Avinash Raj。你的解决方案解决了我大部分的问题 :) - Phantom
1
@Phantom,这些解决方案中是否有一个完全解决了你的问题?如果是,请考虑将其中一个标记为正确答案,或者发布你自己的解决方案,以解决它们没有解决的任何其他情况。 - Beth Crane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接