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には後読みがないため、"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 に答える