看起來HTML5 spec (and therefore ECMA262)允許<input type="text" pattern="[0-9]/[0-9]" />
匹配字符串'0/0',即使正斜槓沒有轉義。 Web應用程序一樣的Drupal想提供瀏覽器服務器端驗證不喜歡的東西支持HTML5:什麼是在HTML5模式輸入元素屬性上使用的安全PCRE正則表達式分隔符?
<?php
preg_match('/^(' . $pattern . ')$/', $value);
?>
不幸的是字符串「[0-9]/[0-9]」不是有效的PRCE正則表達式。看來,如果不是所有支持HTML5的瀏覽器同時支持pattern="[0-9]/[0-9]"
和pattern="[0-9]\/[0-9]"
這引出了一個問題 - 我們有什麼可以用作爲分隔符在其上運行的Perl風格的正則表達式這種模式?
我們已經提交了bug report against the W3C spec但瀏覽器錯在這裏? HTML5規範是否需要澄清?有沒有可以在PHP中使用的解決方法?
好的問題,但正如亞歷克斯指出的,沒有解決方案。作爲旁註,追加'^'和'$'字符可能已經破壞了模式,不是嗎?考慮'$ pattern =「(^ | foo)bar」'。 – FtDRbwLXw6 2012-03-02 02:43:40
模式屬性的spec說假設它必須匹配整個字符串,而不僅僅是它的一部分,所以我認爲這將是一個無效模式? – 2012-03-02 05:47:28