我现在拥有的:preg_match("[\W|_]",$string),它匹配任何非单词字符和下划线。但是,我只想匹配包含字符串\w中间的单个空格的字符串(而不$string是以任意数量的空格开头或结尾),而不是下划线。谢谢你的帮助!
应匹配的示例:Example 123或One Two Three。
应该拒绝的示例:example&or (以一个或多个空格开头,并且 "Example" 和 "of) 之间有多个空格Example of foo。
我现在拥有的:preg_match("[\W|_]",$string),它匹配任何非单词字符和下划线。但是,我只想匹配包含字符串\w中间的单个空格的字符串(而不$string是以任意数量的空格开头或结尾),而不是下划线。谢谢你的帮助!
应匹配的示例:Example 123或One Two Three。
应该拒绝的示例:example&or (以一个或多个空格开头,并且 "Example" 和 "of) 之间有多个空格Example of foo。
啊,所以你不需要捕捉匹配的结果 - 只是为了测试字符串是否匹配某个模式。这可以通过...
$pattern = '/^[A-Z0-9](?:[A-Z0-9 ]*[A-Z0-9])?$/i';
...但如果你想覆盖 ASCII 范围之外的字母,那注定会失败。你应该使用它来代替:
$pattern = '/^[\p{L}0-9](?:[\p{L}0-9 ]*[\p{L}0-9])?$/u';
检查演示以查看实际情况。