RegEx查找唯一字

时间:2016-09-07 12:30:06

标签: javascript regex

我尝试在JavaScript中解析字符串并找到所有以:符号开头的唯一字词。我为此目的编写了正则表达式:

/(:[A-z]\w+)(?!.*\1)/g

它适用于此字符串:

"test :one :one test :one test :two".match(/(:[A-z]\w+)(?!.*\1)/g)

结果是[':one', ':two'] Online example #1

但是,如果单词后面的新行符号

"test :one\n :one test :one test :two".match(/(:[A-z]\w+)(?!.*\1)/ig)

正则表达式无法正常工作并返回[':one', ':one', ':two'] Online example #2

如何修改此正则表达式并获得唯一的结果?

1 个答案:

答案 0 :(得分:3)

您需要使用[\s\S]而不是.来确保检查可能会一直到 string (不仅仅是行)和{{1}的结尾而不是[a-zA-Z](请参阅Why is this regex allowing a caret?):

[A-z]

请参阅regex demo

/(:[a-z]\w+)(?![\s\S]*\1)/gi