Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使str.index()仅匹配整个单词_Javascript_Regex_Indexing - Fatal编程技术网

Javascript 使str.index()仅匹配整个单词

Javascript 使str.index()仅匹配整个单词,javascript,regex,indexing,Javascript,Regex,Indexing,我想使用JS函数“index()”匹配整个单词 我想在此返回-1: var str="hello I am a string"; alert(str.index("str")); //it matches because of STRing, but don't want Edit:但我严格希望仅当“str”被两个空格环绕时匹配它(但当它位于句子的开头/结尾时也匹配)。所以\b不要为我工作,因为我不想让“你好,我是str,你好吗?”匹配您可以使用要搜索的单词,并将(^ |\s)放在一边,这意

我想使用JS函数“index()”匹配整个单词

我想在此返回-1

var str="hello I am a string";

alert(str.index("str")); //it matches because of STRing, but don't want

Edit:但我严格希望仅当“str”被两个空格环绕时匹配它(但当它位于句子的开头/结尾时也匹配)。所以
\b
不要为我工作,因为我不想让
“你好,我是str,你好吗?”
匹配您可以使用要搜索的单词,并将
(^ |\s)
放在一边,这意味着字符串的开头或空白字符,将
($\s)
放在右边,表示字符串或空白字符的结尾:

var str = "hello I am a string";

alert(str.search(/(^|\s)str($|\s)/)); // alerts -1
alert(str.search(/(^|\s)string($|\s)/)); // alerts 12
也许这会奏效:

(^|\s)str(\s|$)
除了上面的“搜索”方法外,我还看到为这个精确的测试添加了空格。我在测试一个元素是否有特定的类时看到了这一点

var str = "hello I am a string"

(" " + str + " ").index(" str ");

你的索引将减少1,但如果你想生存(而不是职位),这将起作用。

我想这就是你想要的:

alert(str.search("(^|\\s|\\W\\s)str($|\\W$|\\s|\\W\\s)"));

它将“STR”作为一个单词,在字符串的开头、结尾或中间某个地方单独表示。“str”之前或之后的标点符号必须后跟至少一个空格字符或字符串末尾。这样,“str”可以开始或结束一个句子(“str.ing”),但“str.ing”不匹配。

我注意到break这个词使“str.ing”和“str.ing”可以匹配。如果“str”被两个空格环绕,我只想匹配它(但当它们位于句子的第一个/最后一个时也要匹配)
“+str+”
不会匹配第一个/最后一个元素也不会计算标点符号的大小写,比如
str,
@AbhranilDas,我真的希望这样,看我的问题edit@TuxedoKnightChess正确的,出于某种原因,我错过了“str”周围的空格。通过在要检查的字符串的前后添加空格,以及您要查找的内容,您将捕获第一个或最后一个单词。我真的希望只匹配由空格和句子开头/结尾组成的单词。明白了。在我编辑答案以适应此限制之前,您是否希望匹配“something str:”或者只有当“str”和字符串结尾之间的最后一个标点是句点时,您的ans才是原创的,可能会帮助其他人。我想你最好还是保持原样。其他人已经回答了我想要的答案,因此将您的ans更改为相同的其他ans只会删除一个有趣的答案:)