Javascript 正则表达式查找唯一的单词
我试图在JavaScript中解析字符串并找到所有唯一的单词,这些单词以Javascript 正则表达式查找唯一的单词,javascript,regex,Javascript,Regex,我试图在JavaScript中解析字符串并找到所有唯一的单词,这些单词以:符号开头。为此,我编写了正则表达式: /(:[A-z]\w+)(?!.*\1)/g 此字符串可以正常工作: "test :one :one test :one test :two".match(/(:[A-z]\w+)(?!.*\1)/g) 结果是[':一',':二'] 但是,如果单词后面有新行符号 正则表达式工作不正常,返回[':一',':一',':二'] 如何修改此正则表达式并仅获得唯一结果?您需要使用[\s\s]
:
符号开头。为此,我编写了正则表达式:
/(:[A-z]\w+)(?!.*\1)/g
此字符串可以正常工作:
"test :one :one test :one test :two".match(/(:[A-z]\w+)(?!.*\1)/g)
结果是[':一',':二']
但是,如果单词后面有新行符号
正则表达式工作不正常,返回[':一',':一',':二']
如何修改此正则表达式并仅获得唯一结果?您需要使用
[\s\s]
而不是
,以确保检查可能会一直到字符串的末尾(不仅仅是行)和[a-zA-Z]
而不是[a-Z]
(请参阅):
见
var re=/(:[a-z]\w+(![\s\s]*\1)/gi;
var str='test:one\n:one-test:one-test:two';
console.log(str.match(re));
//或者,去掉初始值:
log(str.match(re.map)(函数(x){return x.substr(1);}))
[A-z]
vs[A-z]
@Tushar,thx,我会修正这个以防万一:我添加了另一行代码来去除初始的:
如果你需要的话。当然,可以使用内部捕获组完成,然后使用RegExp\exec
迭代匹配,但是为什么不重用代码呢。
"test :one\n :one test :one test :two".match(/(:[A-z]\w+)(?!.*\1)/ig)
/(:[a-z]\w+)(?![\s\S]*\1)/gi