首页 > 解决方案 > HTML RegEx(首字母大写)

问题描述

我有“名字和名字”字段,我需要正则表达式来大写该字段中每个单词的首字母。

使用这种模式,只有第一个单词大写,但第二个不是

<form action="/action_page.php">
  First and Second name <input type="text" name="f_and_s_name" pattern="[A-zA-Z]{1,13}" title="">
  <input type="submit">
</form>

标签: htmlregex

解决方案


pattern="[A-zA-Z]{1,13}"模式由 JS RegExp 引擎解析为^(?:[A-zA-Z]{1,13})$. 它匹配一个由 1 到 13 个字符组成的字符串,这些字符是 ASCII 字母,还有[, \, ], ^, _, `(有关更多详细信息,请参阅此答案)。

您计划仅验证以大写 ASCII 字母开头后跟小写字母、然后有空格、然后再次是大写 ASCII 字母后跟小写字母的字符串。

然后,您可以使用

pattern="[A-Z][a-z]* [A-Z][a-z]*"

如果你想让规则的限制少一点,你可以使用[A-Z][a-zA-Z]*\s+[A-Z][a-zA-Z]*(这也将允许 ALLCAPS 中的字符串,并允许两个字母字符串之间的任何 1+ 空白字符。如果你计划实现 Unicode 字母支持,它只会是在最新的 Chrome 版本中很容易(看起来像pattern="\p{Lu}\p{L}*\s+\p{Lu}\p{L}*")。但是,它不适用于仍然不支持 ECMA2018 标准的所有其他浏览器。


推荐阅读