我正在尝试使用正则表达式验证PHP中的字符串;它只能包含字母(包括拉丁字母,例如“á”,“õ”等)和空格。
我使用preg_replace('/\P{L}/u', '', $ str);
摆脱了除拉丁字母之外的所有内容(包括空格)。我需要在正则表达式上进行哪些更改以包括空格?
答案 0 :(得分:1)
您可以使用
preg_replace('/[^\p{L}\s]+/u', '', $str);
[^\p{L}\s]+
模式将匹配1次或多次出现的任何字符,但不包括Unicode字母或空格。请注意,由于使用u
修饰符,\s
将识别任何Unicode空格字符。
请参见regex demo。
详细信息
[^
-与任何字符匹配的negated character class的开头
\p{L}
-任何Unicode字母\s
-空格]+
-1次或多次。如果您有变音符号并希望保留它们,则必须将\p{M}
添加到否定的字符类/[^\p{L}\p{M}\s]+/u
中。