Javascript 带单词边界的单词列表的正则表达式不区分大小写匹配

Javascript 带单词边界的单词列表的正则表达式不区分大小写匹配,javascript,regex,Javascript,Regex,给定字符串: 这是一个测试,所有类似测试的单词都应该进行测试和检查。 我想编写一个正则表达式,它可以匹配test或testalike无限长的时间,但不能匹配testtest 我不是正则表达式专家,到目前为止,我已经想到了以下几点 \s*(\btest-like\b | \btest\b)匹配良好,但在执行类似于测试的操作时,它将匹配,而不应该匹配。 (^ |[^\w])(\b测试\b | \b测试相似性\b)($|[^\w])此项使用捕获组正确匹配,但它的每个替代匹配都不匹配,因此不匹配等 想知

给定字符串:

这是一个测试,所有类似测试的单词都应该进行测试和检查。

我想编写一个正则表达式,它可以匹配
test
testalike
无限长的时间,但不能匹配
testtest

我不是正则表达式专家,到目前为止,我已经想到了以下几点

\s*(\btest-like\b | \btest\b)
匹配良好,但在执行类似于测试的操作时,它将匹配,而不应该匹配。
(^ |[^\w])(\b测试\b | \b测试相似性\b)($|[^\w])
此项使用捕获组正确匹配,但它的每个替代匹配都不匹配,因此不匹配等

想知道对于第一个正则表达式,当单词被诸如“”等字符拆分时,是否有方法指定不匹配的条件


此处\b测试将与测试匹配,([a-zA-Z]*)?\b将检查'-'之后是否有单词。

也许这一项会有所帮助

它尝试将搜索到的单词与可选的前导和尾随有效字符序列进行匹配,每个序列至少由一个单词字符和一个连接的
-
(?:\w+-)*
)构建(
(?:-\w+)*
)或其他方式构建

const sampleText=`这是一个测试,所有相似的测试单词都应该进行测试和检查。
这是一个测试,所有相似的单词都应该被测试和检查;
常量regX=(/\b(?:\w+-)*测试(?:-\w+*\b/gi);
常量搜索='test';
console.log(
sampleText.match(regX)
);
console.log(
sampleText.match(
RegExp(`\\b(?:\\w+-)*${search}(?:-\\w+*\\b`,'gi')
)
);

.as控制台包装{min height:100%!important;top:0;}
根据上面Wiktor的回答。此问题的解决方案是:

\b(?:测试相似|测试)\b


请注意单词应该被排序。详细信息可以在答案中找到。

为了更好地理解你的问题,你能澄清一下:1)你有一个大的单词列表要搜索吗?2)你动态构建正则表达式模式吗?3)搜索单词/短语可以以特殊字符开始或结束吗?我觉得单词边界不是一个解决方案ion,您可能可以在此处用空白边界替换它们,
(?在开头和
(?!\S)1。它不应该超过100个单词。2。是的,中间捕获组应该动态地建立3。单词不应该用特殊的CassWar开始和结束;如果你考虑回溯的影响,如果100个单词都用同一个前缀开始的话,已经有很多单词了。好的,剩下的呢?理论上,我想。基于关键字列表和文本输入构建一个高亮显示。因此,我发现最好的方法是使用正则表达式匹配单词,并以这种方式进行计数。好吧,在这种情况下,无法避免解析整个文本。那么,请看一看。它是否回答了您的问题?我认为基本版本可能只需要一个更改,即是,转义搜索词。但是如果搜索词没有特殊字符,则不需要转义。实际上,它甚至更高级,因为代码支持不同的span类来突出显示不同的搜索词。
/\btest(-[a-zA-A]*)?\b/gi