只允许a-z和空格以及每个单词的首字母大写

时间:2013-06-10 06:33:26

标签: php regex

有人坐在只允许a-z的正则表达式上,并且只允许每个单词的首字母大写?

所以'我是侦探John kimble'会匹配但是“我是一个警察yOu iDiot”是不允许的

6 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:1)

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

.title {
    text-transform: capitalize;
}

在PHP中,字符串函数ucfirst是这样的:

$foo = ucfirst($foo);

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

var pat = /^[a-z]+$/;

答案 2 :(得分:1)

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

您可以简单地更正案例:

$str = "joHn KiMBle";
echo ucwords(strtolower($str));  // John Kimble 

答案 3 :(得分:0)

尝试使用

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

希望有所帮助

答案 4 :(得分:0)

您可以使用此模式检查:

^(?>[A-Za-z][a-z]*+|[^A-Za-z]++)+$

答案 5 :(得分:0)

没有正则表达式的可行。

!(strspcn($text, "0123456789") !== false || 
  ucwords($text) == ucwords(strtolower($text)))