Firefox浏览器URL栏使用什么正则表达式模式?

4

我正在使用正则表达式模式匹配和其他方法解决一个问题(搜索问题)。 我想看看Google,Yahoo,Bing,Ask等搜索引擎的行为。

考虑到Firefox,Chrome,Opera和其他浏览器也有URL栏或搜索栏,我开始尝试不同的单词,然后是符号。

在Firefox中,我看到了许多不同的结果。以下是一些截图-

^ 符号 - 给出一些随机结果。

^ symbol

$符号 - 也会给出随机结果。我还尝试添加字符串,但没有得到结果。

Dollar Symbol

()括号 - 当使用时可以得到正确的结果。它被视为一种比较类似字符串的符号。

parenthesis symbols

*符号 - 这也给出了一组没有符号本身匹配的结果。不确定为什么会有这些不同的结果。

Star symbol

~符号 - 这也给出了一组没有符号本身匹配的结果。不确定为什么会有这些不同的结果。

Tilde symbol

我很想知道为什么许多符号的行为有如此大的差异,而其他字符串和/或符号则按预期工作。

-

@thanksd并不是一个重复。那个是关于字符串匹配的工作原理。我已经知道了那部分内容。我很明显在问符号。符号如何被考虑用于匹配。


2
我非常确定这不是正则表达式。 - Bergi
1
他们不是使用已经加载了你的历史记录和收藏夹的trie吗? - Jonny Henly
2
Firefox使用 textFromtheWholeOfTheInternet.match(new RegExp('.*' + urlbar.value + '.*')); - 考虑到它需要在每次按键时匹配整个互联网的内容,速度相当快。 - Jaromanda X
1
可能是Firefox的“awesome”栏如何匹配字符串?的重复问题。 - thanksd
1
@JaromandaX 不是这样的。那样会容易受到正则表达式注入攻击,所以 urlbar.value 首先要通过某种 RegExp.escape 进行清理。然后就可以安全地匹配整个互联网的内容了 :P - Oriol
显示剩余5条评论
1个回答

1
没有主流浏览器会将您在其地址栏中输入的内容解释为正则表达式,因为普通用户不了解正则表达式。
以下是 Firefox 的工作方式(基本上):
  1. 选择搜索内容。这是通过检查browser.urlbar.default.behavior首选项以及查找查询中的特殊字符来完成的:

    您可以使用可自定义字符来限制下拉列表中显示的结果类型。在地址栏中的任何位置包含字符并用空格分隔,以限制显示哪些结果。

    字符如下:

    • #:返回与标题文本匹配的结果。
    • @:返回与URL文本匹配的结果。
    • *:仅返回书签中的结果。
    • ^:仅返回浏览器历史记录中的结果。
    • +:仅返回已标记的结果。
    • ~:仅返回已键入的结果。
    • %:仅返回打开的标签页(可见标签页,而非活动标签页),适用于Firefox 4(SeaMonkey 2.1)及更高版本
  2. 在搜索内容时,每个以空格分隔的字符序列(除了上述特殊字符)必须以其文本(网站标题、URL等)不区分大小写的方式出现。 (序列可能重叠。)


哇!我检查了所有的内容。它都按照所说的工作。非常棒的信息。谢谢lydell - bozzmob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接