0

我需要捕获所有(英语)单词,除了模式是:

"_any-word-symbols-including-dash." 

(所以开头有下划线,最后有点,中间有任何字母和破折号)

我尝试过这样的事情:

/\b([A-Za-z-^]+)\b[^\.]/g

但我似乎不明白如何处理负面匹配。

更新:

我不仅需要匹配,还需要将单词包装在一些标签中:

“a some words _abbr-abrr. a here”我应该得到:

<w>a</w> <w>some</w> <w>words</w> _abbr-abbr. <w>a</w> <w>here</w>

所以我需要用正确的正则表达式替换:

test.replace(/correct regex/, '<w>$1</w>')
4

1 回答 1

2

负前瞻(?!).

所以你可以使用:

/\b([^_\s]\w*(?!\.))\b/g

不幸的是,在 javascript 中没有lookbehind,所以你不能用“not prefixed by _”来做类似的技巧。

例子:

> a = "a some words _abbr. a here"
> a.replace(/\b([^_\s]\w*(?!\.))\b/g, "<w>$1</w>")
"<w>a</w> <w>some</w> <w>words</w> _abbr. <w>a</w> <w>here</w>"

跟随您的评论-。更新的正则表达式是:

/\b([^_\s\-][\w\-]*(?!\.))\b/g

> "abc _abc-abc. abc".replace(/\b([^_\s\-][\w\-]*(?!\.))\b/g, "<w>$1</w>")
"<w>abc</w> _abc-abc. <w>abc</w>"
于 2013-07-12T15:35:12.797 回答