Html5 入力タイプには、多くの新しいタイプが含まれています。
(範囲、電子メール、日付など...)
例えば :
<input type="url" >
IEには正規表現ストア(内部フォルダーの1つ)があったことを知っています
質問 :
入力を検証するためにクロムが使用する正規表現を確認できますか?
それは表示可能なファイルか何かの下にありますか?/どうすればこれらの正規表現を見ることができますか?
Html5 入力タイプには、多くの新しいタイプが含まれています。
(範囲、電子メール、日付など...)
例えば :
<input type="url" >
IEには正規表現ストア(内部フォルダーの1つ)があったことを知っています
質問 :
入力を検証するためにクロムが使用する正規表現を確認できますか?
それは表示可能なファイルか何かの下にありますか?/どうすればこれらの正規表現を見ることができますか?
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
Blink のあらゆる場所で使用されている URL の適切な実装のようです。
比較すると、正規表現を使用する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, 0, &matchLength);
return !matchOffset && matchLength == addressLength;
}
これらの要素などは、/htmlフォルダーにあります。それらのほとんどは、正規表現ではなく、入力の適切な解析とチェックを使用しているようです。