我现在拥有的内容:preg_match("[\W|_]",$string)
,它匹配任何非单词字符和下划线。但是,我只想匹配包含\w
的字符串和字符串中间的单个空格(而不是$string
以任意数量的空格开头或结尾),而不是下划线。谢谢你的帮助!
应该匹配的示例:Example 123
或One Two Three
应拒绝的示例:example&
或(从一个或多个空格开始,以及“Example”和“of of”Example of foo
之间的多个空格。
答案 0 :(得分:3)
啊,所以你不需要捕捉匹配的结果 - 只是为了测试字符串是否匹配某些模式。这可以用......完成。
$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';
检查demo以查看实际情况。