PHP preg_match:任何字母但没有数字(和符号)

dab*_*aba 2 php regex

我试图为我的表单中的字段设置验证规则,检查输入只包含字母.

起初我尝试创建一个函数,如果字符串中没有数字,则返回true,因为我使用了preg_match:

function my_format($str)
{
   return preg_match('/^([^0-9])$', $str);
}
Run Code Online (Sandbox Code Playgroud)

无论我多少次看到php手册,似乎我都无法理解如何创建我想要的模式.我做的是什么问题?

但我想扩展一个问题:我希望输入文本包含任何字母,但不包含数字或符号,如问号,感叹号以及所有您能想象的内容.但是我想要的字母不仅仅是az,我想要各种口音的字母,如西班牙语,葡萄牙语,瑞典语,波兰语,塞尔维亚语,岛屿语...

我想这不是一件容易的事,而且很难或不可能用preg_match做.有没有图书馆可以满足我的确切需求?

Jon*_*y 5 5

如果您使用的是utf-8编码输入,请使用unicode正则表达式.使用u modifier.

这个匹配一个只包含字母和任何类型的空格/不可见分隔符的字符串:

preg_match('~^[\p{L}\p{Z}]+$~u', $str);
Run Code Online (Sandbox Code Playgroud)