javascript – Chrome的Regexes – 我可以查看它们吗?

前端之家收集整理的这篇文章主要介绍了javascript – Chrome的Regexes – 我可以查看它们吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

(范围,电子邮件,日期等……)

例如 :

< input type =“url”>

我知道IE曾经有正则表达式存储(在其内部文件夹之一)

题 :

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

它是在可查看的文件下还是什么? /我怎么能看到那些正则表达式?

最佳答案
我查了一下Blink的源代码.请记住,我在今天之前从未见过它,所以我可能会完全离开.
假设我找到了合适的地方 –

对于type =“url”字段,有URLInputType,代码为:

bool URLInputType::typeMismatchFor(const String& value) const
{
    return !value.isEmpty() && !KURL(KURL(),value).isValid();
}

typeMismatchFor从HTMLInputElement::isValidValue开始调用

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);
}

KURL似乎是一个URL的正确实现,在Blink中随处可见.

相比之下,EmailInputType的实现,typeMismatchFor调用isValidEmailAddress,它确实使用正则表达式:

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,&matchLength);

    return !matchOffset && matchLength == addressLength;
}

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

原文链接:https://www.f2er.com/js/429810.html

猜你在找的JavaScript相关文章