如何在 RegExp javascript 中排除搜索词中的逗号

问题描述 投票:0回答:1

我有绳子:

const text = 'A Jack# Jack#aNyWord Jack, Jack';

我只想搜索单词“Jack”,但如果 Jack 包含 # 字符,则表示真正的均值匹配。

我尝试:

const text = 'A Jack# Jack#aNyWord Jack, Jack';
const regexpWords = /Jack(?=,|#)/g;
console.log(text.match(regexpWords));

结果说:

Array ["Jack", "Jack", "Jack"]

我的预期输出是:

Array ["Jack#", "Jack#aNyWord", "Jack", "Jack"]

除了“Jack”这个词,

我该怎么办?

javascript regex
1个回答
0
投票
如果您想要

#

 
in 匹配,那么您不需要前瞻((?=___)
。您还没有说出 
#
 之后的内容应该有效,但如果我假设有任何字母或数字,然后:

const text = "A Jack# Jack#aNyWord Jack, Jack"; const regexpWords = /Jack(?:#[a-zA-Z0-9]*)?/g; console.log(text.match(regexpWords));

就是这样说的

    匹配
  • Jack
    
    
  • 可选地匹配#
    ,后跟任意数量的
    [a-zA-Z0-9]
    。我通过将 
    #[a-zA-Z0-9]*
     包装在非捕获组 (
    (?:___)
    ) 中,然后使用 
    ?
     使该组可选
    
我使用

[a-zA-Z0-9]*

 来表示 
#
 后面的字母,因为表达式没有 
i
 标志(不区分大小写的匹配,将匹配 
jack
)。如果您要添加 
[a-z0-9]*
 标志,则可以使用 
i

MDN 的正则表达式文档相当不错:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

© www.soinside.com 2019 - 2024. All rights reserved.