HTML5的输入模式属性是否忽略大小写?

50

我需要让HTML的输入元素模式忽略值的大小写,比如说,如果正则表达式是/[a-z]*/,能否让它匹配所有大写字母?
(我知道我可以使用 /[a-zA-Z]*/,但这只是一个例子。)

1个回答

77

我认为这是不可能的。

  1. <input pattern> [1,2] 的规范指定:

    • 模式采用 ECMAScript (即 Javascript) 的正则表达式语法

    • 它被编译时 "全局、忽略大小写和多行标志禁用"

  2. 在 Javascript 中,使正则表达式忽略大小写的唯一方法是通过外部设置修饰符 (/.../i)。PCRE 语法 (?i) 不受支持。

因此,模式始终区分大小写,而 [a-zA-Z]* (即仅使正则表达式本身明确地不区分大小写)是以不区分大小写的方式匹配模式的唯一方法。


3
如果“忽略大小写”标志被禁用,那么它就不会忽略大小写,因此是区分大小写的。@dominicbri7说:“使用[…]标志禁用”。 - Niet the Dark Absol
很棒的回答。(我肩上的学究可能更喜欢你写“详细地”或“明确地”,而不是“手动地”,但这并不妨碍你的回答有帮助) - Martin Joiner
2
在不区分大小写的情况下匹配多个术语时非常不方便。 - oldboy
3
[sS][uU][cC][kK][sS]. - King Friday
虽然我找不到文件声称它们被禁用的地方... - massic80
1
@massic80 根据HTML规范,模式是通过RegExpCreate(pattern, "v")的结果,而ES规范指出v是UnicodeSets标志。要实现不区分大小写,还需要使用i标志创建。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接