0

有人坐在只允许 az 并且只允许每个单词的第一个字母大写的正则表达式上?

所以“我是侦探约翰·金布尔”会匹配,但不允许“我是警察你白痴”

4

6 回答 6

2

此正则表达式将匹配单词开头带有小写或大写字母的单词。

[a-zA-Z][a-z]*

现在,您可以扩展正则表达式以匹配多个此类单词,具体取决于您想要什么。您必须对此小心一点,以确保它可以处理奇怪的情况,例如空句子等。

([a-zA-Z][a-z]*)* // Matches the empty sentence as well
([a-zA-Z][a-z]*)+ // Must have at least one word

然后您需要考虑开始和结束字符 (^$) 是否与您的模式相关。

于 2013-06-10T06:38:52.610 回答
1

在 css 中,您可以将每个单词的第一个字母大写:

.title {
    text-transform: capitalize;
}

在 PHP 中,字符串函数ucfirst如下所示:

$foo = ucfirst($foo);

仅允许a-z在 Javascript 中使用此正则表达式

var pat = /^[a-z]+$/;
于 2013-06-10T06:36:21.847 回答
1

你真的不需要正则表达式。因为我真的不认为这是一种冒犯

您可以简单地纠正这种情况:

$str = "joHn KiMBle";
echo ucwords(strtolower($str));  // John Kimble 
于 2013-06-10T06:48:29.440 回答
0

尝试使用

([a-zA-Z][a-z]*)+

希望能帮助到你

于 2013-06-10T06:41:39.060 回答
0

您可以使用此模式来检查:

^(?>[A-Za-z][a-z]*+|[^A-Za-z]++)+$
于 2013-06-10T06:42:04.370 回答
0

无需正则表达式即可。

!(strspcn($text, "0123456789") !== false || 
  ucwords($text) == ucwords(strtolower($text)))
于 2013-06-10T07:19:42.240 回答