我正试图在我的正则表达式中允许白人空间。由于某种原因,此表达式将不允许空格。这是我现在的正则表达式
preg_match( "/^[A-Za-z0-9?.,-=$@!&%';:)(_\s]+$/", $value )
答案 0 :(得分:1)
您尝试匹配的空白区域可能不在ascii范围内。 (例如不易碎的空间)。因此,您可以尝试添加u修饰符以将\s
字符类扩展为所有unicode空格(默认情况下\s
仅包含ascii空格)。
所以试试这个:
preg_match( "/^[A-Za-z0-9?.,-=$@!&%';:)(_\s]+$/u", $value )
或者这个:
preg_match( "/(*UCP)(*UTF8)^[A-Za-z0-9?.,-=$@!&%';:)(_\s]+$/", $value )
注意:我建议你进行巧妙的测试,以确保空白确实是问题所在。
注意2:此模式完全匹配相同的东西,但它使用字符范围(查看ascii表)和不区分大小写的修饰符i
:
preg_match( "/^[!$-'(),-=?@-Z_\s]+$/ui", $value )
答案 1 :(得分:0)
匹配空白:
preg_match("/^[A-Za-z0-9?.,-=$@!&%';:)(_\s]+$/", ' '); // true
preg_match("/^[A-Za-z0-9?.,-=$@!&%';:)(_\s]+$/", 'a a'); // true
preg_match("/^[A-Za-z0-9?.,-=$@!&%';:)(_\s]+$/", 'aaa'); // true
preg_match("/^[A-Za-z0-9?.,-=$@!&%';:)(_\s]+$/", 'a*a'); // false