写了这个简单的代码:
var text = " вирус ";
text.match(/^вирус$/);
而且没有巧合。如果删除 text 变量中的空格,则它会找到。
我需要在文本的任何地方找到这个词。如果去掉开头和结尾的标志,那么它会找到,包括这样的选项:“viruses”、“viruses”等,但我需要一个完全匹配的,即“virus”。如何正确实施?
写了这个简单的代码:
var text = " вирус ";
text.match(/^вирус$/);
而且没有巧合。如果删除 text 变量中的空格,则它会找到。
我需要在文本的任何地方找到这个词。如果去掉开头和结尾的标志,那么它会找到,包括这样的选项:“viruses”、“viruses”等,但我需要一个完全匹配的,即“virus”。如何正确实施?
看起来很糟糕,但它确实有效
试试这个选项。考虑到这个词是用俄语写的,结果有点可怕
一个单词要么从行首或边界字符开始,要么在边界字符或行尾结束。
您可以使用更简单的形式
但它可能不适用于俄语(取决于正则表达式的实现)。
适用于拉丁语
在支持 ECMAScript 2018+ 的 JS 中,单词边界可能如下所示:
如果需要在中找到
(?<![\p{L}\p{N}_])вирус(?![\p{L}\p{N}_])/ug
下划线,可以删除。вирус
_вирус_
u
正确处理 Unicode 类需要该修饰符\p{...}
。(?<![\p{L}\p{N}_])
- 否定回溯块,查找字符串中不能紧跟任何字母、数字或_
.(?![\p{L}\p{N}_])
- 否定前瞻块,在字符串中查找不能紧跟_
任何字母、数字或.