我正在尝试匹配前面或后面或两者都有空格的单词。
var sample = " test-abc -test# @test _test hello-test@ test test "
就像上面的例子一样,第一个'test'会被算作它前面有一个空格,下一个不会被算作因为它没有空格,第三个'test'会被算作它后面有一个空格,类似地第四个也是,第五个不算,因为它前后没有空格,最后两个算在内,因为它们前后都有空格。
function countOccurences(str,word){
var regex = new RegExp("(\\b|(?<=_))"+word+"(\\b|(?<=_))","gi");
console.log((str.match(regex)|| []).length);
}
我写的函数计算了确切的单词但不考虑空格所以我得到的输出是 7 但我想要得到的是 5。
最佳答案
您可以在这里尝试使用 match()
:
var sample = " test-abc -test# @test _test hello-test@ test test ";
var matches = sample.match(/(?<=\s)test|test(?=\s)/g, sample);
console.log("There were " + matches.length + " matches of test with whitespace on one side");
此处使用的正则表达式模式表示匹配:
(?<=\s)test test preceded by whitespace
| OR
test(?=\s) test followed by whitespace
请注意,这里的 5 场比赛是:
test-abc
@test
_test
test
test
关于javascript - 用于计算特定事件的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70120132/