【发布时间】:2021-12-26 22:21:12
【问题描述】:
我正在尝试创建一个正则表达式来检测一个字符串在另一个字符串中的确切出现次数。
function countOccurences(string, word) {
var regex = new RegExp("\\b" + word + "\\b", "gi");
return (string.match(regex) || []).length;
}
var str =
"TEST Testing TeSt case-test case@test <h1>Test</h1> www.test.com TEST_UF_3780_nix_inputs r_test regex-test_";
var asset = "test";
console.log(countOccurences(str, asset));
在这里,我得到了“test”字符串的完全匹配,但它忽略了所有前后都有下划线的“test”字符串(像 TEST_UF... 或 r_test 或 regex-test_,未检测到“test”字符串)。 我需要帮助来检测这些字符串。
【问题讨论】:
-
也许不是用 \b (单词边界)包围,而是可以尝试 \S - 非空白字符。例如。 [...str.matchAll(/\S*test\S*/gi)].
-
请提供所有应该匹配的模式——到目前为止你说“test”和“test_”应该匹配。另外,告诉我们应该存在多少匹配?你的函数应该返回什么? 1、6、8、10?
标签: javascript regex string string-matching