ske*_*gse 5 javascript string search
我不知道其他 Javascript 引擎,但在 V8 中,包括 Chrome 和Node.js,String.prototype.search以一种意想不到的方式运行。
> "054".search("0.4")
0 // expected -1
> "Sample String 007".search("0.7")
14 // expected -1
> "Sample String 0.7".search("0.7")
14 // expected behavior
Run Code Online (Sandbox Code Playgroud)
如果这是预期的行为,为什么会这样?如果这是预期的行为,我如何在没有正则表达式的情况下正确搜索字符串?
MDN 上String.search的页面有关于函数参数的说明:
如果传递了非 RegExp 对象 obj,则使用 将其隐式转换为 RegExp
new RegExp(obj)。
因此,示例中的字符串被正确强制转换为正则表达式对象。您的测试相当于:
"054".search(new RegExp("0.4"))
"Sample String 007".search(new RegExp("0.7"))
"Sample String 0.7".search(new RegExp("0.7"))
Run Code Online (Sandbox Code Playgroud)
他们返回正确的结果。
正如@meetamit 在您的第二个问题中指出的那样,您实际上想要indexOf,它需要一个字符串参数,而不是正则表达式。