匹配不以省略号结尾的字符串中的单词

jak*_*ine 2 javascript regex pattern-matching

假设我有以下字符串:

ZD:123123 ZD:213123 ZD:2e213 [ZD:213123] [ZD#221313] ZD:234...

我希望每次出现模式匹配,除非 ZD:234...因为我不想要任何有elipses的单词.

这个模式在JavaScript中很适合我:

/(\[|\(|)ZD[:#]\w+(\]|\)|)/g

但是,它仍然抓住了ZD:234的部分ZD:234...,我绝对不想做的事.

我怎样才能阻止正则表达式这样做?

Kob*_*obi 5

一个简单的解决方法是使用负向前瞻:

/(\[|\(|)ZD[:#]\w+\b(\]|\)|)(?!\.\.\.)/g 
Run Code Online (Sandbox Code Playgroud)

请注意,我还添加了\b以避免匹配ZD:23.

有点简化:

/[\[(]?ZD[:#]\w+\b[\])]?(?!\.\.\.)/g
Run Code Online (Sandbox Code Playgroud)

如果你想要匹配括号(否[ZD:123)):

/(?:ZD[:#]\w+|\[ZD[:#]\w+\]|\(ZD[:#]\w+\))\b(?!\.\.\.)/g
Run Code Online (Sandbox Code Playgroud)