Javascript 铬';s正则表达式-我可以查看它们吗?

Javascript 铬';s正则表达式-我可以查看它们吗?,javascript,regex,google-chrome,Javascript,Regex,Google Chrome,Html5输入类型包括许多新类型 (范围、电子邮件、日期等) 例如: 我知道IE以前有regex存储(在它的一个内部文件夹上) 问题: 我能看看chrome用什么正则表达式来验证输入吗 它是在可查看的文件或其他文件下吗?/我怎样才能看到那些正则表达式呢?我查找了Blink的源代码。请记住,我今天以前从未见过它,所以我可能会完全离开。 假设我找到了正确的地方- 对于type=“url”字段,有以下代码: bool URLInputType::typeMismatchFor(const Stri

Html5输入类型包括许多新类型

(范围、电子邮件、日期等)

例如:

我知道IE以前有regex存储(在它的一个内部文件夹上)

问题:

我能看看chrome用什么正则表达式来验证输入吗


它是在可查看的文件或其他文件下吗?/我怎样才能看到那些正则表达式呢?

我查找了Blink的源代码。请记住,我今天以前从未见过它,所以我可能会完全离开。 假设我找到了正确的地方-

对于
type=“url”
字段,有以下代码:

bool URLInputType::typeMismatchFor(const String& value) const
{
    return !value.isEmpty() && !KURL(KURL(), value).isValid();
}
类型不匹配从调用


这些元素以及更多元素都可以在文件夹中找到。似乎他们中的大多数人都在使用正确的输入解析和检查,而不是正则表达式。

你怎么知道这是正则表达式?@Kobi我敢打赌it@RoyiNamir:它可能使用正则表达式(一系列正则表达式),但作为浏览器,它可能有一种更可靠的方法来验证URL。我想,它将是Chromium或WebKit,两者都是开源的。它可能写为正则表达式,但格式良好的电子邮件或url的规则过于宽松,以至于这些正则表达式可能看起来简单得令人难以置信。我担心你会因此丧命。@T.J.Crowder-或者。我登录了Chrome:
http://ש1500;ום.com
是一个有效的URL,但是
ש1500;ום@example.com
是一封无效的电子邮件-上面的正则表达式不支持Unicode。我想知道为什么它们会受到不同的对待。(通过regex发送的电子邮件与Url(不是)…@Kobi干得好。我有一个问题:如何搜索链接到的在线存储库?“你没有吗?”戴斯特罗伊-谢谢!我在谷歌上搜索了一些类似“闪烁源代码”的东西,找到了。我试着只在
网站:chromium.googlesource.com/chromium
中搜索,但找到的大部分是我看不懂的差异日志(它们让我感到困惑),也不感兴趣。我回到根文件夹,从那里开始,主要是程序员的直觉。源代码整洁且组织良好(至少是我需要的部分),并且易于导航。
bool HTMLInputElement::isValidValue(const String& value) const
{
    if (!m_inputType->canSetStringValue()) {
        ASSERT_NOT_REACHED();
        return false;
    }
    return !m_inputType->typeMismatchFor(value) // <-- here
        && !m_inputType->stepMismatch(value)
        && !m_inputType->rangeUnderflow(value)
        && !m_inputType->rangeOverflow(value)
        && !tooLong(value, IgnoreDirtyFlag)
        && !m_inputType->patternMismatch(value)
        && !m_inputType->valueMissing(value);
}
static const char emailPattern[] =
    "[a-z0-9!#$%&'*+/=?^_`{|}~.-]+" // local part
    "@"
    "[a-z0-9-]+(\\.[a-z0-9-]+)*"; // domain part

static bool isValidEmailAddress(const String& address)
{
    int addressLength = address.length();
    if (!addressLength)
        return false;

    DEFINE_STATIC_LOCAL(const RegularExpression, regExp,
                        (emailPattern, TextCaseInsensitive));

    int matchLength;
    int matchOffset = regExp.match(address, 0, &matchLength);

    return !matchOffset && matchLength == addressLength;
}