gpt4 book ai didi

javascript - search() 函数的算法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:40 24 4
gpt4 key购买 nike

有人知道 javascript 中用于 search() 函数的算法是什么吗?

var myRegExp = /Alex/;
var string1 = "Today John went to the store and talked with Alex.";
var matchPos1 = string1.search(myRegExp);

if(matchPos1 != -1)
document.write("There was a match at position " + matchPos1);
else
document.write("There was no match in the first string");

Example copied tizaq.com

我需要使用此函数在文本文档中搜索不同的字符串值。但我需要记录这种方法背后的算法是什么,以及复杂性是什么。否则我必须编写自己的方法来搜索我拥有的文本文件。

最佳答案

规范说它是作为正则表达式匹配实现的:

3) If Type(regexp) is Object and the value of the [[Class]] internal property of regexp is "RegExp", then let rx be regexp;

4) Else, let rx be a new RegExp object created as if by the expression new RegExp( regexp) where RegExp is the standard built-in constructor with that name.

5) Search the value string from its beginning for an occurrence of the regular expression pattern rx. Let result be a Number indicating the offset within string where the pattern matched, or –1 if there was no match. (...)

(Section 15.5.4.12 String.prototype.search (regexp))。

这意味着您的问题归结为正则表达式匹配算法。但这也不在规范中,这取决于实现:

The value of the [[Match]] internal property is an implementation dependent representation of the Pattern of the RegExp object.

(Section 15.10.7 Properties of RegExp Instances)。

因此,如果确实需要记录该算法的复杂性,我想您必须编写自己的方法。但请记住,通过这样做,您可能会想出一些效率较低的东西,并且可能依赖于其他复杂性未知的内置方法(甚至可能是 RegExp 本身)。所以,你不能说服那些记录内置的、依赖于实现的 js 方法的复杂性的权力不是你的工作吗?

关于javascript - search() 函数的算法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13516137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com