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

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

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

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

例如 :

< input type =“url”>

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

题 :

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

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

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

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

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

typeMismatchFor从HTMLInputElement::isValidValue开始调用

  1. bool HTMLInputElement::isValidValue(const String& value) const
  2. {
  3. if (!m_inputType->canSetStringValue()) {
  4. ASSERT_NOT_REACHED();
  5. return false;
  6. }
  7. return !m_inputType->typeMismatchFor(value) // <-- here
  8. && !m_inputType->stepMismatch(value)
  9. && !m_inputType->rangeUnderflow(value)
  10. && !m_inputType->rangeOverflow(value)
  11. && !tooLong(value,IgnoreDirtyFlag)
  12. && !m_inputType->patternMismatch(value)
  13. && !m_inputType->valueMissing(value);
  14. }

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

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

  1. static const char emailPattern[] =
  2. "[a-z0-9!#$%&'*+/=?^_`{|}~.-]+" // local part
  3. "@"
  4. "[a-z0-9-]+(\\.[a-z0-9-]+)*"; // domain part
  5. static bool isValidEmailAddress(const String& address)
  6. {
  7. int addressLength = address.length();
  8. if (!addressLength)
  9. return false;
  10. DEFINE_STATIC_LOCAL(const RegularExpression,regExp,(emailPattern,TextCaseInsensitive));
  11. int matchLength;
  12. int matchOffset = regExp.match(address,&matchLength);
  13. return !matchOffset && matchLength == addressLength;
  14. }

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

猜你在找的JavaScript相关文章